Can't filter Google Sheets Reader Trigger values

I am using a Google Sheets Reader node as a trigger. I only want it to trigger when a single column is updated (and the text value is not blank). I have set this up with the Router node.

My issue is, my source data is a sheet that refreshes entirely each day, causing too many cells to refresh and causing too many triggers to fire.

Even though my Router node successfully disregards updates where the text value is not blank, this still counts as the Flow running, and my Flow hits an error due to running too many times.

I cannot use a filter option when using the Google Sheets Reader node as a trigger. How can I prevent this flow from running so many times on ALL cells in the sheet?

Here is my flow (all triggers are currently off, but would normally be on): Gumloop | Automation Builder

Hey @Peter_Czepiga,

When the Google Sheets Reader is used as a trigger, it starts a flow once for every row that changes. Since your sheet refreshes all rows daily, your workflow sees all of those as updates and fires a separate run for each one. Even if your Router filters them out later, the runs have already started, which is why you’re hitting the concurrency limit.

To avoid this, you’ll want to switch the workflow to a time-based trigger instead of using the native Sheets trigger directly.

Here’s the setup that usually works best:

  1. Add a new column in your sheet, something like status.

  2. Whenever your row changes, mark the rows you actually care about with something like updated.

  3. Use a Time Trigger to run the flow on a schedule (e.g., daily or hourly).

  4. In the flow, read the sheet and only process the rows where status = "updated".

  5. After processing, update those rows back to something like processed.

This keeps the workflow from firing once per cell and prevents the concurrency overload. It also gives you control over which rows should trigger processing.

This makes a lot of sense, thank you. But wouldn’t I need a formula for step 2 (mark the rows I actually care about with “updated”)? So how could I update that row back to the original formula after processing, when each formula row pulls from slightly different cell references?

Hey Peter, there are a couple of ways to handle this:

You can use a formula to mark rows or Anytime you update a row either manually or through another process – you can just update a dropdown or cell in your status column to the value you want (for example, "updated"). When the Time Trigger runs, the workflow will only pick up those specific rows and process them.

As for resetting the value afterward (e.g., changing "updated" to "processed" so the row doesn’t get picked up again): you can do this directly inside your workflow. Just add a Google Sheets Updater node at the end. It will update only the rows the workflow processed, and only the status column.

So the workflow reads the rows you’ve marked, processes them, then updates the status value after it’s done and that’s what prevents them from being picked up again in the next run.

Let me know if you want an example setup – happy to share one!

Thank you! To clarify, though, the Google Sheets Updater node would overwrite any formula I was using in that cell, which is a problem because that cell will no longer be able to update.

If I have a formula in the cell like: =IF(cell A1 meets condition A, return text “updated”)

…then gumloop updates my formula to simply be the text “processed”, which will overwrite the formula.