Hello community,
I’d like to explain a process we have been using successfully for months and a limitation we are now facing when working with Partitions (User Settings) and the AppSheet API, specifically when uploading files.
Current Process (Working Correctly)
We work with AppSheet + Google Apps Script and implemented a webhook-like flow to automatically store final reports (PDFs) in the client’s data source, not in the app owner’s Drive.
The process is the following:
-
Generate PDF using AppSheet Bot
-
We use “Create a file” in a Bot.
-
The PDF is temporarily created in the app owner’s Google Drive, in a specific folder we define.
-
-
Call a Webhook (Google Apps Script)
-
AppSheet sends the file name, row ID, table name, and other metadata.
-
The Apps Script has access only to the specific folder where the PDF was generated.
-
-
Apps Script Processing
-
Receives the POST request.
-
Locates the generated PDF in the app owner’s Drive.
-
Converts the PDF to Base64.
-
Uses the AppSheet API to upload the file to the correct row and column, simulating a manual file upload.
-
-
Result
-
AppSheet stores the file in the client’s Drive/data source, not the app owner’s.
-
The file appears correctly in the app.
-
The temporary PDF in the app owner’s Drive is deleted.
-
This flow has been working perfectly throughout 2025.
The Problem (With Partitions)
Some of our apps have large datasets, so we use Partitions based on User Settings, for example:
-
Year
-
Period
Normally, the app is working on the current partition (e.g. Year 2026 – Period 1).
The issue appears when:
-
The record we want to update belongs to a previous partition (e.g. Year 2024 – Period 3).
-
When the Apps Script uses the AppSheet API to upload the file:
-
AppSheet only searches for the row in the currently active partition
-
The row exists, but in a different sheet/partition
-
Therefore, the API cannot correctly locate or update the record
-
What We Are Trying to Achieve
Ideally, we would like one of the following:
-
Tell the AppSheet API which partition (year/period) it should use
-
Or dynamically set User Settings values (Year / Period) via the API before performing the update
-
Or have the API search across partitions, not only the active one
However, from what we have researched:
-
User Settings cannot be manipulated via the AppSheet API
-
The API always operates under the current app context, including active partitions
Questions to the Community
-
Has anyone worked with AppSheet API + Partitions + Google Apps Script in a similar scenario?
-
Is there any way to:
-
Control or override User Settings via API?
-
Indicate the target partition when updating a row?
-
Or design partitions in a way that still allows API updates to historical data?
-
-
Is this a known limitation of the AppSheet API?
Any guidance, workaround, or recommended architecture change would be greatly appreciated.
Thanks in advance!