Reference > Nodes

Google Sheets Node

Reference for the n8n Google Sheets node -- operations, authentication, parameters, and common patterns.

ReferenceIntermediate4 min read

The Google Sheets node reads, writes, updates, and deletes data in Google Sheets spreadsheets. It is one of the most frequently used nodes for data collection, reporting, and lightweight database workflows.

Authentication

Google Sheets requires Google OAuth2 credentials.

  1. In the n8n credentials panel, select Google Sheets OAuth2 API.
  2. Create an OAuth2 client in the Google Cloud Console with the redirect URI provided by n8n.
  3. Enable the Google Sheets API and Google Drive API in the same project.
  4. Enter the Client ID and Client Secret in n8n, then click Connect my account to complete the OAuth flow.

Note

If you are self-hosting, your OAuth consent screen must be configured before credentials will work. For internal use, set the app to "Internal" to skip Google's verification process.

Operations

Operation Description
Read Rows Retrieve rows from a sheet. Returns all rows by default or a filtered range.
Append Row Add a new row at the bottom of the sheet.
Update Row Modify an existing row matched by row number or a lookup column.
Delete Row Remove a row by row number.
Clear Clear cell contents in a specified range without deleting rows.

Key Parameters

Parameter Description
Document The spreadsheet to operate on. Selected by name or ID from the resource picker.
Sheet The specific sheet tab within the spreadsheet.
Range Cell range in A1 notation (e.g., A1:D100). Leave empty to target all data.
Header Row The row number that contains column headers. Defaults to 1.
Key Column For Update and Delete -- the column used to match which row to act on.
Options > Data Location Starts at Row number where data begins (useful if the header is not in row 1).
Options > Value Render Mode Controls whether formulas return the computed value or the formula text.

Common Patterns

Read all rows, filter, then process:

Google Sheets (Read Rows) --> IF node (filter) --> Slack / Email / HTTP Request

Set the operation to Read Rows, leave Range empty to get all data, and feed the output into a filter or IF node. Each row becomes one item in n8n's data stream.

Append processed data back to a sheet:

Webhook --> Code node (transform) --> Google Sheets (Append Row)

Map fields from the incoming data to column names. The node matches fields to columns by header name.

Two-way sync between a sheet and a database:

Schedule Trigger --> Google Sheets (Read Rows) --> PostgreSQL (Upsert)

Read rows on a schedule and push changes into a database. Use the key column to detect which rows are new or updated.

Tips and Gotchas

Warning: Column names must exactly match

The Append and Update operations match data fields to columns using the header row text. If your header says First Name but your expression outputs firstName, the value will be silently dropped. Check for trailing spaces in column headers.

  • Header row is required. The node expects the first row (or the row set in Header Row) to contain column names. Sheets without headers will produce items with numeric keys or fail silently.
  • Empty rows break Read Rows. By default, the node stops reading at the first completely empty row. If your data has gaps, set a specific range to avoid truncated results.
  • Rate limits apply. Google enforces a limit of 60 requests per minute per user per project. High-frequency workflows should include a Wait node or batch operations.
  • Formula cells return computed values by default. Switch Value Render Mode to FORMULA if you need the raw formula text.
  • Large spreadsheets are slow. For sheets with more than 10,000 rows, consider moving data to a database and using the PostgreSQL or MySQL node instead.

Common Errors

The caller does not have permission (403) when accessing a spreadsheet. The Google OAuth2 credential does not have the required scopes. Re-authorize the credential with the Google Sheets API and Google Drive API scopes enabled. If the spreadsheet is shared with a specific account, confirm the OAuth credential is connected to that account.

Append operation silently drops columns or writes to the wrong cells. Column matching relies on the header row text. If the header says First Name but the data field is firstName, the value is silently dropped. Inspect the header row for trailing spaces or mismatched capitalization and use an Edit Fields node to rename fields to match exactly.

Read Rows returns fewer rows than expected, stopping at a gap in the data. By default, the node stops reading at the first completely empty row. If your spreadsheet has blank rows in the middle, set a specific range (e.g., A1:D1000) instead of leaving the Range parameter empty.

See Also

Want this running in your stack?

I build production n8n and Cloudflare automation for teams — the same engineering behind HarperFlow. Fixed-price, escrow-protected, US-based.