Title: Google Sheets node (Auto-Map, typeVersion 3) writes values one column off after upgrade to 2.22.5
Describe the problem/error/question
After upgrading n8n from an older release (~10 versions back) to 2.22.5, Google Sheets nodes using “Auto-Map Input Data to Columns” started writing values into the wrong columns on Append and Update. No node was changed — they’re still typeVersion 3 (latest is 4.7). The only variable was the n8n version.
The misalignment is a consistent one-column left shift that begins partway across the row:
-
The first block of columns map correctly.
-
From a specific column onward, every value lands one cell to the left of its matching header, cascading to the end of the row.
Minimal illustration (incoming JSON key → where it should go vs. where it lands):
header: ... | colN | colN+1 | colN+2 | colN+3
should: | (empty)| fieldA | fieldB | fieldC
actual: | fieldA | fieldB | fieldC | (empty) ← everything shifted 1 left from colN
Key point: the read side is correct — it’s the write that misplaces the data. The Append node’s output JSON shows e.g. fieldA: "X" and reports success, but reading that same row back by key returns fieldA: "Y" (the neighbouring column’s value). The value was physically written one column over. Downstream, any in-sheet formula columns and the follow-up Update step then resolve against the wrong cells and return #REF!.
So Auto-Map’s name->column matching is partially failing: early columns match, a contiguous later block is shifted by one.
Sheet characteristics that appear to trigger it (a simple sheet does not reproduce it):
-
A wide sheet (~150 columns), of which the workflow only supplies ~30; the remainder are blank or in-sheet formula columns.
-
A duplicate header name (identical header text in two different columns).
-
A column whose value is a nested object / JSON blob rather than a scalar.
This pattern (Append → read back → Update with row/formula context) is used across many workflows, so it affects all of them.
What is the error message (if any)?
No node error — Append/Update report success. The only visible failure is #REF! in dependent sheet formulas, caused by the upstream column shift.
Questions for the team:
-
Did the Auto-Map column-resolution logic for Google Sheets typeVersion 3 change between recent releases and 2.22.5? (Is v3 now routed through different code?)
-
Are duplicate headers and/or nested-object cell values known to break Auto-Map column alignment in current versions?
-
Recommended path — move these nodes to explicit “Map Each Column”, upgrade to node 4.x, or is this a v3 regression worth patching?
Workflow / output: Happy to share a sanitized minimal-repro workflow and a before/after row on request.
n8n setup
-
n8n version: 2.22.5 (upgraded from ~10 releases prior, exact prior tag unknown)
-
Database: PostgreSQL
-
EXECUTIONS_PROCESS: main
-
Running via: Docker, with workers
-
OS: Ubuntu
-
Google Sheets node: typeVersion 3 (unchanged across the upgrade)