Skip to main content
Version: 3.0

Google Sheets Nodes

Read a range of a spreadsheet, append rows to a log, and overwrite a fixed range, from your pipelines.

Needs
A Google Sheets connection
Operations
Read Range · Append Rows · Update Range
Defaults
Header row on, 1,000 rows, values written raw
Limits
10,000 rows per read or write

Google Sheets nodes read and write one spreadsheet, the one their Google Sheets connection names. Use them for shift logs, lookup tables and status boards.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile and function, fill the function's parameters (expressions allowed), and optionally override the timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behaviour and error handling. All default to the pipeline's values.

Settings Tab​

The Settings tab is the same for all three nodes: description, timeout, retries and the error strategy. Read Range is safe to retry. Update Range is safe to retry: the same values end in the same cells. Append Rows is not: if a request timed out after it reached Google, a retry can add the rows a second time.


Spreadsheet Operations​

Google Sheets Read Range Node​

Google Sheets Read Range nodeGoogle Sheets Read Range node

Google Sheets Read Range Node

Read one range. With Header Row on, each data row is an object keyed by the header row's text; off, the cells come back as rows of values. At most Max Rows data rows are read: the limit is written into the range sent to Google, so a whole-column range never reads the whole sheet.

Output Structure​

With Header Row on:

{
"result": {
"range": "'Shift Log'!A1:E1002",
"rows": [
{ "Date": "2026-11-02", "Shift": "A", "Line": "BC-41", "Good": 1840, "Scrap": 12 },
{ "Date": "2026-11-02", "Shift": "B", "Line": "BC-41", "Good": 1795, "Scrap": null }
],
"rowCount": 2,
"truncated": false
}
}

With Header Row off:

{
"result": {
"range": "'Shift Log'!A2:E1002",
"values": [["2026-11-02", "A", "BC-41", 1840, 12], ["2026-11-02", "B", "BC-41", 1795, null]],
"rowCount": 2,
"truncated": false
}
}
FieldTypeDescription
result.rangestringThe range Google read, with the row limit written in
result.rowsarrayOne object per data row, keyed by the header row's text. A cell Google left out (trailing empty cells) is null. Present when Header Row is on
result.valuesarrayThe cells as rows of values, each padded with null to the widest row. Present when Header Row is off
result.rowCountnumberHow many data rows were delivered
result.truncatedbooleantrue when the range held more than Max Rows data rows; the rest were not read

With Values As unformatted (the default), numbers and booleans are JSON values and dates are the text the sheet shows. Sheets has no timestamp type, so the node adds none.


Google Sheets Append Rows Node​

Google Sheets Append Rows nodeGoogle Sheets Append Rows node

Google Sheets Append Rows Node

Add rows below the table Google finds in the range. The rows are one request, written whole or not at all. Appends are buffered through an outage and replayed in order; a replay after a timeout may add the rows twice.

Output Structure​

{
"result": {
"tableRange": "'Shift Log'!A1:E3",
"updatedRange": "'Shift Log'!A4:E4",
"updatedRows": 1,
"updatedColumns": 5,
"updatedCells": 5
}
}
FieldTypeDescription
result.tableRangestringThe table Google found before appending. Present only when it found one
result.updatedRangestringWhere the rows were written
result.updatedRowsnumberHow many rows were written
result.updatedColumnsnumberHow many columns were written
result.updatedCellsnumberHow many cells were written

Google Sheets Update Range Node​

Google Sheets Update Range nodeGoogle Sheets Update Range node

Google Sheets Update Range Node

Overwrite the cells of a fixed range. A null cell is left as it is; "" clears it. Rows larger than an explicit range are refused before anything is sent.

Output Structure​

{
"result": {
"updatedRange": "'Status'!B2:B4",
"updatedRows": 3,
"updatedColumns": 1,
"updatedCells": 3
}
}
FieldTypeDescription
result.updatedRangestringThe range that was written
result.updatedRowsnumberHow many rows had a cell written
result.updatedColumnsnumberHow many columns had a cell written
result.updatedCellsnumberHow many cells were written

Metadata​

Every Google Sheets node also carries facts about the call in _metadata:

FieldDescription
_metadata.methodThe operation that ran, such as googlesheets.appendRows
_metadata.protocolAlways googlesheets
_metadata.connectionIdThe connection the call ran on
_metadata.spreadsheetIdThe spreadsheet the connection reads and writes
_metadata.rangeThe range written, as sent to Google (Append Rows and Update Range; Read Range reports it as result.range)