[Google Sheet Trigger] Gets 400+ data rows when theres only one new or updated row

Describe the problem/error/question

Firstly I am super glad that the Google sheets trigger node came out! now I dont need zapier anymore and can save about $1000 every year!

Problem is that I am having trouble with both checking for updates and new rows, everytime the workflow runs its pulls like 400+ rows that are not new? also there are some running numbers and formulas that are pre populated and it seems that its pulling those too?

I am setting it to check a particular column which has a concatenate formula, which is supposed to be null when nothing is entered but it still has a formula in the cell? could this cause problems?

Also the select data range is pretty handy but it would be nice if we could specify the columns manually or specify which row is the header row and which are the data row. - Im a DUMBASS just found that u can do this as manual range!

Because im using an existing spreadsheet i don’t want to pull up all the existing entries but only the new ones or updated ones,

Maybe suggest a learn button which pulls that data and excludes it from future pulls, right now I cant send over 20,000 slack messages to several people.

Heres an link to an example sheet

What is the error message (if any)?

Please share your workflow

Share the output returned by the last node

Gets like 400+ data rows when theres only one new or updated row

Information on your n8n setup

  • just one version behind the latest release hosted in docker container

Okay there are some developments.

The Column being watched is concatenating important columns that when updated need to trigger the workflow.

the columns being watched are being imported from another spreadsheet using import range function.

The other spreadsheet is updated and the changes are brought to the working spread sheet, when something is changed the entire sheet or 332 items are being pulled into the trigger.


I have a theory that when the import range function is used it refreshes the entire dataset and then concatenate has to do it again and therefore n8n picks up the whole column or 300+ rows as UPDATED

Hey @Josh-Ghazi

Have you tried to activate the workflow with only the Google Sheets Trigger node and see what response you get when you modify a row in the spreadsheet?

I just tried with a clone of your example sheet, and when activated it only records the modified row, while in the test run of the node, it returns all rows.

Hi thans martin, This is the output when triggered by updating a single row, do u mind to send me ur email address and i can share the real sheets with u??

@Josh-Ghazi I just tested on the sheet you shared, and indeed, even if only cell E7 (for example) is modified, the node returns all rows.

Looking at the rest of the columns, I have seen that columns U, V and W have formulas to concatenate values. By removing them from row 4, and changing cell E7 again, the node returns all rows except row 4.

So yes, by changing a single cell, the formulas in columns U, V and W are updated in background for all rows, hence they all appear.

Thank you so much for confirming my theory, Can you think of any quick fixes or workarounds? in the google sheet that can give me a cell that doesn’t update unless changed even if it references other cells? or create an entire new column that doesnt change unless edited??

The biggest kicker is that this works perfectly fine in ZAPIER, and it all seems to be as if zapier reads the data for its face value and not the actual cell contents and triggers perfectly.

Yes @Josh-Ghazi , a quick and easy alternative is to create a second sheet in the document (Copy of Sheet1 in the example) and do an IMPORTRANGE of the first one inserting only the range of columns A:T, and add in this second sheet of the document the columns U:X containing the concatenate formulas.

In this way, the Workflow will only receive the modified rows, and when constructing the slack messages, you only have to take the data from the columns U:W of the second sheet.

You have the construction in the example sheet that you have shared.


1 Like

Its hard for me to understand how it is different to how it is already? the changes only happen to the purple and blue columns which are brought in from another sheet with importrange() so if i importrange again to another sheet wont it also detect a full change? I dont need the concatenate column actually, just noticed that the columns to watch can select multiple columns.

The Google Sheets Trigger node only detects changes in Sheet 1, all changes that occur in sheet two will not influence its behavior, because it is indicated in the options that it is sheet 1.

Any cell that you update manually in sheet 1, will be automatically changed in sheet 2 (by the IMPORTRANGE function), which allows the U:W columns of sheet 2 to do the concatenation functions.

If you do not need these columns (U:W), the solution is even simpler, remove them from sheet 1 and you will not have any problem working only with the first sheet…

1 Like

thank you for the clarification, so you think that the concatenation functions are causing the problem with the trigger reads? i will test using the method of checking several columns without checking the concat columns so we can rule out the concatenation columns if the problem is still there

In this previous check, it is clearly seen how when deleting the cells with concatenation formulas from row 4, this row does not appear in the output of the Google Sheets Trigger node, while the rest of the rows that do contain these formulas appear.

okay did some more testing, not using the concat, it only picks up updates sometimes, and when it does it still pull all rows.???

I just ran the check with the same node configuration you show and the result is correct.

The node only returns the modified row (row 7 in the example), when cell N7 is modified, which is inside one of the four columns that the node has to check if it has changed.

Therefore, if in the spreadsheet you have shared the workflow works correctly, you are probably not taking into account any difference in the original spreadsheet.

I see the problem must stem from the spreadsheet using importrange() from another spreadsheet to populate that data and it will update all in that range causing all updated rows, So my solution at the moment is probably to have another column to copy the concatenate column and run another workflow to read this spreadsheet and check the differences between the two columns and update the row that has a difference.

That way this workflow doesnt need to depend on the importrange or concatenate columns and the column to watch has no formula and doesn’t change unless the other workflow changes it.

I wish that the trigger would actually read the data and store it as a reference in memory so that it knew if there was a real change in the data just like in ZAPIER

Update, just built a super simple workflow to copy and update another column called “for n8n” only one cell gets updated at a time at 5 min intervals.

This is working fine but the changes made by this workflow are not being picked up by the google sheet trigger node in the other workflow, maybe i should just run the workflow off the cron, this would mean that the google sheet trigger needs more work.

So far the workflow is running as intended, a bit of a painful experience with the google sheet trigger. They must really have put a lot of work into the zapier integration

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.