Resolve the most common bot email problems using the guidance provided in the following sections:
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.
Can AppSheet alert me automatically if a bot fails?
You can subscribe to automatically receive an email alert each time an error is recorded in Audit History, and alert you when a bot fails to execute. To enable automatic alerts, see Automatic Alert on Audit History Errors.
Why didn't my email arrive?
Successfully sending an email message from the AppSheet server does not mean that the email message was received by the recipient.
You can determine if the email was delivered to the user's email server, as described in How do I determine whether an email was delivered? (below).
If the email was delivered but the recipient cannot find it, ask them to check their spam email folder. The email may have been redirected to the spam email folder by the recipient's email filter.
The email may be not be delivered for the following reasons:
The email may have been blocked by the email service because the attachment was too large.
The customer's email server may be blocking or bouncing email messages to that recipient.
Most email servers have policies to block spam email and to block large volumes of email from a single source. These policies may reject valid system-generated emails and prevent the email from being delivered. This happens frequently.
How do I determine whether an email was delivered?
To determine whether an email was delivered, check the audit history log.
If you selected to use the System Mandrill email web service, Mandrill assigns a unique Mandrill Email Id to that email. AppSheet stores the Mandrill Email Id in the email bot audit history record. It may take a few minutes before the Mandrill Email Id appears in Audit History. Mandrill only returns this information after it attempts to deliver the email.
To check the Mandrill email delivery status, customize the dashboard settings and look for the audit record that is relevant to the email delivery. Click the Details icon to view more details, then Click the Email Details heading on the top right to retrieve the email delivery status.
The following information will be displayed:
Subject: The email subject.
Email Status: The status returned by Mandrill.
Send Time: The email sent time in UTC.
Recipient: The email recipient
Sender: The email sender, that is,
Number of Opens:
Why are emails only sent to the app creator?
While the app is in test mode (that is, it has not passed a Deployment Check), any emails sent from a bot are delivered to the app creator only. This ensures that you do not inadvertently send email messages, SMS messages, or notifications, or post HTTP messages while debugging your bot.
Why is the parent record displayed but the child records are missing?
When you add a parent record along with one or more child records, AppSheet first adds the parent record, then each of the child records. If your bot is triggered when the parent record is added, it does not display the child records because they will not have not been added when the bot executes.
To resolve this, see Sending email only after adding a parent record and all of its children.
Why isn't my bot running on the schedule I specified?
Always start by checking the Audit History as described in Why isn't my bot working? above.
Your bot will only run automatically on the specified schedule after your application has been deployed and you are on a paid pricing plan.
If you application is not deployed or you are not enrolled in a paid pricing plan, your bot will not run on the specified schedule. However, you can invoke your bot by clicking Test on the Automation > Bots pane.
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:
Click the Customize and control Google Chrome button on the top right of the browser's toolbar.
Select Settings from the drop-down.
Under Privacy and security, expand Site settings.
Under Content, expand Pop-ups and redirects.
Add https://www.appsheet.com:443 to the Allow list.
Why is there a large gap between the preheader and the email body text?
If there is a large gap between the email preheader and the email body text, try the following:
Set all page margins to 0.
Set the Page Setup to A4
Why is the email attachment formatted incorrectly?
In your bot, you can define parameterized Google Doc templates that will be converted to PDF files and sent as attachments with the bot email. Occasionally, these attachments 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 attachment templates.
AppSheet performs the following steps when processing attachment templates:
Exports the Google Docs template to HTML.
This conversion is lossy --- in particular, HTML does not support the concept of pagination.
Modifies the HTML by replacing all template variables and expressions in the HTML template with data values.
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:
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.
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 PDF attachments too large or too small?
You can control the size of images shown in the email body or attachments. 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 email 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 can I control when and how maps are shown in my attachment PDF?
You can control how geographic column values (Addresses and LatLongs) are shown in the email body or attachments. 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 email content. 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 attachment. 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 email body or attachment 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.