My source Google Sheet contains a column named: Sheet name
Sample values:
Overall Tasks
University Tie-up & Termination
Destination Sheet :-
I have one Google Spreadsheet with multiple tabs:
*Overall Tasks
*University Tie-up & Termination
Rows should be appended to the tab specified in the Sheet name column.
What I’ve Tried :-
Replaced the dynamic Sheet expression with two separate Google Sheets Append Row nodes.
Each Append Row node is configured with a fixed sheet name (By Name).
Used a Switch node to route items based on the “Sheet name” column.
Verified that the destination tab names exactly match the values in the source sheet.
Removed the Loop Over Items node as it was not required.
Problem :-
Despite using a Switch node with two separate Append Row nodes (each pointing to a fixed sheet), all rows are still appended to only one tab.
The Switch appears to evaluate correctly, but every item is ultimately written to the same destination sheet.
I’ve attached both workflow JSON files and screenshots for reference.
Questions :-
Is this expected behavior with the Google Sheets Append Row node?
Does the Google Sheets node cache the selected sheet?
Is there any known issue with routing items to different tabs in the same spreadsheet?
Is there a better approach for appending rows to different tabs dynamically?
Hi @Mohit0529 Welcome!
With the Sheet field set to “From list” or “By Name”, n8n stores the tab’s internal gid and that selection is what’s misrouting the rows, so everything lands in one tab no matter how the Switch splits. This is a known node bug.
On each Append node, set the Sheet to “By ID” and paste that tab’s gid, the number after #gid= in the tab’s own URL, instead of picking it by name. The gid is exact, so each node writes only to its own tab.
If you’d rather keep one dynamic Append node, add a Loop Over Items node before it with Batch Size set to 1, and set the Sheet “By ID” from an expression holding the gid. Batch size 1 makes the tab resolve per item.