Hi everyone,
I’m looking for the best practice to quickly batch-update a large number of rows in AppSheet without triggering slow client-side updates (one-by-one).
For example, currently I have an action like: Set the value of this row [select] = "Yes". If I select 100 rows, I’ll see 100 separate updates on the client side, which is slow and visually disruptive.
Has anyone implemented a backend solution (e.g., Google Apps Script or webhook) to update multiple rows quickly in the background? If yes, could you share your experience or an example of how you set this up?
Thanks in advance!
@C2 wrote:
Has anyone implemented a backend solution (e.g., Google Apps Script or webhook) to update multiple rows quickly in the background? If yes, could you share your experience or an example of how you set this up?
Yes , you could do so with webhook. You will need
1) Some logic to decide which rows of the table you wish to update. Currently with actions you must be selecting those 100s of rows manually through "probably" bulk actions?
2) Then you will need some event trigger for the automation bot- this means typically one of those rows selected needs to update by say manual row level action and then the bot triggers on that event change. You could also do so with an appropriate scheduled bot.
Thanks for your explanation! However, it's still not completely clear to me how I should proceed practically.
Currently, when I manually select multiple rows in the app and run an action, it sets [select]="Yes" for each row individually (which triggers many separate client-side updates). But at this point, the rows are only temporarily selected within the app interface—they're not yet marked in any way on the underlying Google Sheet.
If I want a Bot to trigger a backend webhook for batch processing, how can it "know" exactly which rows I've temporarily selected in the app? Shouldn't the selection somehow first update a column in bulk on Google Sheets (like my current [select]="Yes" action does)?
Could you please clarify how I can practically pass these temporarily-selected rows to a backend bot without causing individual client-side updates?
Thanks again!
@C2 wrote:
how can it "know" exactly which rows I've temporarily selected in the app?
As clearly mentioned, you will need some logic. For example some examples are rows with [Purchase_Date]<= TODAY() or [order_Status] ="Complete"
If the rows selection process is totally random, then I am afraid, I believe there is no good way except to use the bulk action route as you are doing currently. This is so because , the app automation ( or for that matter any automation system) will need "some" logic to select multiple rows somewhere out of all the rows.
You may want to mention based on what logic the user currently manually selects so many rows. I believe there needs to be at least some logic?
@C2 wrote:
it sets [select]="Yes" for each row individually (which triggers many separate client-side updates). But at this point, the rows are only temporarily selected within the app interface—they're not yet marked in any way on the underlying Google Sheet.
Also could you clarify what you mean by this? You seem to be setting [Select]= "Yes" ,yet nothing is set in Google sheets. Could you elaborate?
What you want to do is not possible with the built-in bulk selection mechanism. The alternative is implementing your own filtering and selection feature that captures the selection in an EnumList column of a single row. That single row could then trigger a bot to act on the many selections captured by the EnumList.
Thanks all, now it's clearer.
Currently, as you understood correctly, I do exactly this:
I manually select multiple rows using a [Select] column.
I set [Select] = "Yes" through a bulk action, which triggers multiple individual client-side updates. For example, selecting 100 rows causes 100 slow client-side updates.
After that, a Bot triggers and runs a grouped action on those selected rows.
From your explanation, it seems the suggested approach to improve this scenario is:
Temporarily capture the selection into a single row (e.g., using an EnumList column to store the IDs of selected rows).
Then use this single row’s EnumList as the input for the bot to quickly and efficiently update all the relevant rows in the backend.
Did I get this right?
Would this effectively avoid multiple client-side updates?
Thanks again!
@C2 wrote:
Did I get this right?
You accurately restated what I said.
Would this effectively avoid multiple client-side updates?
Yes, as I noted originally and as noted by your restatement.
User | Count |
---|---|
35 | |
11 | |
3 | |
3 | |
2 |