Image Storage

You can display images and documents in your app.

Images are stored in Image column types; documents are stored in File column types.

Image or document values are stored in your spreadsheet as either a URL or a file name.

URL Value

If you store the value as a URL, make sure that the URL is publicly accessible! Many users who choose this option provide image URLs that appear accessible to them, but are not really publicly accessible. Here are some examples of bad image URLs:

  • Facebook:  You may be able to access images from your Facebook album because you are logged into Facebook, but when some other user tries to see the image, they will get an error. Whenever you are using an image from some kind of online storage provider, make sure that public access permissions are provided.
  • Google Drive: Viewing an image on Google Drive shows your image on a webpage that hosts an image, but the URL of the webpage will not work as a link to your image. To get the correct URL for an image hosted on Drive, first use the "get shareable link" option in Share settings. This provides a URL like{fileID}. This still leads to a webpage hosting your image, not the image itself, but it provides the fileID you need to create the final image link:{fileID} 
  • Dropbox: Dropbox, like most cloud file systems, shows your image on a webpage, but the webpage itself is not actually an image. It is a web page that hosts an image. This article explains how to construct a link to a Dropbox image. 
  • Local Computer: An image URL from your local computer of the form file://MyImages/MyImage.jpg or C:/MyImages/MyImage.jpg. AppSheet has no access to your local computer, nor do you have the option to 'upload' an image to AppSheet. Instead, place your images in your cloud storage provider and use one of the mechanisms described above.

File Name Value

If you store the value as a file name, the image or document must be stored in your cloud file system, not on your own computer!

  • In the app editor, we provide a file selector widget that lets you browse your cloud file system to find an image.
  • If you are specifying an image or document file name in your spreadsheet, the file should be in the same folder location as your spreadsheet. For example, if you use Google Drive and your spreadsheet is in the /appsheet/data/MyApp folder, then if you have the image MyImage.jpg in the same folder, you can just use the value, MyImage.jpg, in the appropriate cell.
  • It is sometimes easier to organize images in their own folder. For that reason, we allow image file names to be specified relative to the location of the spreadsheet. For example, if your images are in a subfolder called Images, you can use the cell value, Images/MyImage.jpg or ./Images/MyImage.jpg.

See this Google Sheets article if you need assistance with image sizing.

Custom Image Guidelines

AppSheet downscales all images to 600px wide except for the app background image which is 1000px wide. For custom images, we generally recommend using square images: 600x600px.

In the Detail View

The detail view has a "main" image. The main image is automatically selected but can be overridden with the Main image property.

The Image style property can be used to control how the image is shown: Fill will crop the image to fit the header area (great for photos); Fit will scale the image down to fit inside the header area (great for logos); and Background will use the image as a background for the whole view (great for pattern images and some photos).

In Fill mode, images shown at the top of the detail view will be a maximum of 768x400 pixels. On small screens (768 and below) the image will be 320px tall, otherwise it will be 400px tall. We recommend making a 768x400 image with the middle 375px as usable area, the sides will be cropped off on phones and other small screens. Here's a sample:

Showing Images in Google Sheets

You cannot display app images outside of your apps without disabling a security setting. See the Required Security Settings section below for more details. If you would like to have URLs to view app images, you should add an additional URL column and use the following spreadsheet formula (in Google Sheets) to construct image URLs from the image file names: 


=CONCATENATE("", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL("TableName"), "&fileName=", ENCODEURL(+ImageColumnCell)) 


=CONCATENATE("", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 

To find the application name to include in the image URL, look at the URL bar of the app editor browser window. It should contain something like "". The application name is the value following "?appName=". In this case, the application name is "Inventory-114348".

To find the table name to include in the image URL, do this:

  1. In the app editor, go to the Data >> Tables pane.
  2. Expand the table that contains the image field.
  3. Copy the value in the Table Name property.

To test the image URL, copy the constructed value into any browser window. The image should render. If there is something wrong with the image URL construction, the image will not render and instead you will see a message indicating that the page could not be found. Almost always, this is because the application name specified is incorrectly.

Now that you have the correct image URL, you can embed the image inline within your Google spreadsheet. To do so, add another column (you could call it Image Preview for example), and then wrap the image URL in an IMAGE() expression.


=IMAGE(CONCATENATE("", ENCODEURL("AppName-Account#"), "&tableName=", ENCODEURL"TableName"), "&fileName=", ENCODEURL(+ImageColumnCell))) 


=IMAGE(CONCATENATE("", ENCODEURL("Inventory-114348"), "&tableName=", ENCODEURL("Orders"), "&fileName=", ENCODEURL(+B2))) 

Required Security Settings

If you have an app where you are manually constructing a link to the gettablefileurl endpoint as described above, that link will not work unless you edit your app by going to Security -> Options and unchecking the toggle for “Require Image and File URL Signing.” By unchecking this option, you should understand that you are making your app files less secure. An app user could potentially modify the URL in order to see any file in the app that they could guess the file name for. If the Secure Image access and/or Secure PDF access settings are disabled for the app, this means potentially anyone can do this. It is best to leave the option checked if possible.

Showing Images in Smartsheet

Normally, images are stored as files in a cloud file system and the name of the file is put into a cell of the corresponding row in the data spreadsheet. If your data is in Smartsheet however, there are a couple of extra considerations. Smartsheet does not have a traditional 'file system'. Instead, the images associated with any row should be stored as a row attachment and the name of the attachment file should be stored in the corresponding cell.

Smartsheet recently introduced a mechanism that allows an image to be saved and shown inline within a cell. Any images captured via an AppSheet app will be saved as a row attachment and will also additionally display inline with the specific cell. However, if you are creating a data set for use with an AppSheet app, the inline images cannot be read and processed by AppSheet. You will need to create the images as row attachments as described earlier.

Image Caching

We cache images in Cloudflare because it is expensive to retrieve and serve images directly from AppSheet servers. It is even more expensive if we must resize the image before displaying it.

If you are reusing the image file URL and directly updating the contents of the image file, you will only see the updated image value once the cached image ages out of the Cloudflare cache.

If you enable "Secure Image Access" we do not cache the image in Cloudflare and image retrieval performance will suffer. You can enable "Secure Image Access" by going to Security > Options in the Editor.

Did this answer your question?