The most common support questions for Save File workflow actions are:

Where is the file being saved?

Configure the file system where files are saved using the File Store property when configuring the Create a new file task.

To understand the folder and file naming conventions, see Archiving files created from a bot. You can view the saved folder and file names in the Audit History.

Why isn't my bot working?

If you are having a problem with the execution of your bot, always start by checking the audit history log.

Customize the dashboard settings and look for the audit record that is relevant to the bot. Click the Details icon for more information. If there was an issue with the bot execution, the reason will be provided. If you see "Result": "Success", then the bot execution was successful.

Note: You may need to wait for up to five minutes for the audit record to appear. AppSheet groups audit records before writing them to the audit history log to reduce overhead. This can result in a delay before an audit record appears in the audit history. If you don't see an audit record, click Search periodically to refresh the audit history log.

Why isn't the bot Test button working?

If clicking Test on the Automation > Bots pane does not invoke your bot for testing, make certain that your browser is not blocking pop-up windows.

If you are using the Google Chrome browser:

  1. Click the Customize and control Google Chrome button on the top right of the browser's toolbar.

  2. Select Settings from the drop-down.

  3. Under Privacy and security, expand Site settings.

  4. Under Content, expand Pop-ups and redirects.

  5. Add https://www.appsheet.com:443 to the Allow list.

Why isn't the PDF file formatted correctly?

In your bot, you can define parameterized Google Doc templates that will be converted to PDF files. Occasionally, these files are not formatted identically to the original document template. To troubleshoot this problem, it is important to understand the steps used by AppSheet to process the file templates.

AppSheet performs the following steps when processing file templates:

  1. Exports the Google Docs template to HTML.
    This conversion is lossy --- in particular, HTML does not support the concept of pagination.

  2. Modifies the HTML by replacing all template variables and expressions in the HTML template with data values.

  3. Converts the HTML to PDF.
    This conversion reintroduces pagination constructs (such as margins and page breaks). However, they may not match the original pagination settings.

Formatting inconsistencies can be introduced at step 1 or step 3 because neither step maintains complete document fidelity. Most commonly, the problems are introduced at step 1 and can be fixed manually, as follows:

  1. Open the Google Docs template, export it to PDF, and view the results.
    Tweak the formatting options in the Google Docs template until it exports to PDF as required.

  2. Open the Google Docs template, export it to HTML, and view the results.
    Tweak the formatting options in the Google Docs template until it exports to HTML as required.

Why are the images in the PDF file too large or too small?

You can control the size of images shown in the file. By default, columns/expressions of type Image are shown larger than columns/expressions of type Thumbnails.

You can specify a format rule (in the UX > Format Rules section of the app editor) to further control the size of images in your file content. In the format rule, you choose the table, one or more columns, an optional condition, and the image size (Tiny, Small, Medium, Large). See Displaying images, thumbnails, drawings, and signatures in templates.

How do I control when and how maps are shown in my PDF file?

You can control how geographic column values (Addresses and LatLongs) are shown in the file. By default, columns/expressions of type LatLong are shown as static maps with a pin, while columns/expressions of type Address are shown as text.

You can specify a format rule (in the UX > Format Rules section of the app editor) to further control the size of static maps in your file. In the format rule, you get to choose the table, one or more columns, an optional condition, and the image size (Tiny, Small, Medium, Large, or Text). Choosing Text results in the textual representation of the value being shown in the file. See Displaying Address, LatLong, and XY values in templates.

Why is the error "Request cancelled: took too long to process" occurring?

AppSheet has a mechanism to prevent runaway applications from consuming too much time and impeding other applications that are running at the same time.

When starting an Add, Update, or Delete request, AppSheet starts a timer that runs for 2 minutes. AppSheet expects the request to finish within that 2-minute time limit. This includes the time to perform the Add, Update, of Delete as well as the time to perform any bot triggered by that Add, Update, or Delete.

AppSheet checks the time limit when:

  • Computing virtual columns

  • Applying security filters
    For example, when evaluating an expression that requires reading a table and applying a security filter to it.

  • Fetching values from a table
    For example, if you have virtual columns that contain expressions that refer to other tables. AppSheet must read the tables, apply the security filters for the tables, and compute the virtual column values for the tables.

Time limits may be exceeded if you app has:

  • A large number of virtual columns that have AppFormulas that are expensive to evaluate.

  • Virtual columns that have AppFormulas that require reading other tables. When evaluating the AppFormulas, AppSheet must read the other tables, apply security for the tables, and compute the value of the virtual columns for those tables.

  • Bots that are expensive to perform. Bots that have complex file templates can be expensive. For example, if they include Start expressions that require reading other tables, applying security filters for the tables, and computing the values of the virtual columns for the tables.

Did this answer your question?