> ## Documentation Index
> Fetch the complete documentation index at: https://docs.noxus.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets

> Start flows from new rows, and read, look up, update, append and delete rows and cells, and create spreadsheets and tabs in Google Sheets

Use Google Sheets to start a flow when a row is added to a sheet, and to read and change spreadsheets from inside a flow. This flow marks every new order **Received** as soon as it lands in the sheet. Press **Run** to watch it.

Node
Output in this run

Every trigger and node needs a Google Sheets connection. See [Connect Google Workspace](https://docs.noxus.ai/integrations/providers/google.md) to set one up. Create Google Sheet also needs a Google Drive connection, with the same Google account, when you pick a folder.

Every node that reads or changes rows expects the column headers in row 1. Row numbers are the sheet's own: row 1 is the header row, so data rows start at 2, and no node reads, updates or deletes the header row.

## Triggers

The trigger checks the sheet every minute. When you save it, it records the ID of every row already in the sheet, and those rows never start a flow. Each row starts a flow once, the first time its ID appears in the **Key Column**. Edits, sorting and deleted rows never start a flow, and a row that is deleted and added again with the same ID does not start one either.

What it does

## Nodes

| Node | What it does |
| - | - |
| [Read from Columns](#read-from-columns) | Reads a tab, with one list output per column |
| [Read Sheet Rows](#read-sheet-rows) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Reads every row, rows by number, matching rows or a range |
| [Read Sheet Cells](#read-sheet-cells) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Reads one cell or a range of cells |
| [VLOOKUP](#vlookup) | Finds rows by one or more columns, and returns or writes values |
| [Write in Columns](#write-in-columns) | Writes lists of values into columns |
| [Update Sheet Row](#update-sheet-row) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Updates a row found by number or by a matching column |
| [Update Sheet Cells](#update-sheet-cells) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Writes one cell or a range of cells, with an optional note |
| [Append Sheet Rows](#append-sheet-rows) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Adds rows below the data |
| [Delete Sheet Rows](#delete-sheet-rows) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Deletes rows by number or by a matching column |
| [Get Google Sheet](#get-google-sheet) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Gets a spreadsheet's title, locale, time zone and tabs |
| [Create Google Sheet](#create-google-sheet) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Creates a spreadsheet, with a first tab and headers |
| [Add Google Sheets Tab](#add-google-sheets-tab) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Adds a tab, with headers and rows from a CSV file |
| [Copy Google Sheets Tab](#copy-google-sheets-tab) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Copies a tab within its spreadsheet or into another one |
| [Delete Google Sheets Tab](#delete-google-sheets-tab) [From 1.11.0](https://docs.noxus.ai/core/changelog.md#1-11-0) | Deletes a tab |

Most nodes start with **Spreadsheet**, picked from your Drive, and then ask for the **Worksheet** (the tab). The worksheet list fills in once the spreadsheet is set, and the column lists fill in once the worksheet is set.

What it does

## Troubleshooting

> [accordion] A new row did not start the trigger
>
> Open the trigger's events. A row whose ID is already used by another row is listed as skipped with `Another row has the same key, so this row did not trigger`. A row with an empty Key Column waits until it has an ID, and rows that were in the sheet when you saved the trigger never start a flow.

> [accordion] Key Column ... is not in the sheet's header row
>
> Type the header exactly as it appears in row 1 of the sheet, or of the **Filter Range**. Case does not matter.

> [accordion] The sheet ... is no longer in this spreadsheet
>
> The tab was renamed or deleted. If it was renamed, choose it again in the trigger.

> [accordion] The selected spreadsheet no longer exists
>
> Google could not find the spreadsheet with this connection. Check that it still exists, then pick it again in the node.

> [accordion] The spreadsheet you are trying to read is not compatible
>
> Row 1 of the tab is empty. Put the column headers in row 1.

> [accordion] The column ... no longer exists in the spreadsheet
>
> The header was renamed or removed. Pick the column again in the node.

> [accordion] Row ... can't be used: row 1 holds the headers
>
> Row numbers start at 2. Use a `row_numbers` output from Read Sheet Rows to get the right numbers.

> [accordion] ... is not a cell or range
>
> Use a cell or a range with both corners, such as `B5` or `B2:D10`. Open ranges such as `B2:B` or `A:A` do not work.

> [accordion] Range ... is ... but the values are ...
>
> In Update Sheet Cells, the grid in **Value** must have as many rows and columns as the range. Change the range, or write one value to fill every cell.

> [accordion] Not in the header row: ...
>
> Append Sheet Rows only writes to existing headers. Fix the column name, or turn on **Add missing columns** to create it.

> [accordion] No row where ... is ...
>
> Update Sheet Row found no matching row. Check the value, or set **If no row matches** to **Insert a new row**.

> [accordion] ... rows where ... (rows ...)
>
> Several rows matched while **If several rows match** is **Fail**. Set it to **Update the first** or **Update all**.

> [accordion] Results truncated or Row limit reached
>
> Read from Columns read **Maximum number of rows** rows and more data may follow. Raise the limit under **Advanced**.

> [accordion] Creating a spreadsheet in a folder needs write access to Google Drive
>
> Connect Google Drive in **Settings > Integrations** with the same Google account, or leave **Folder** empty to create the spreadsheet in My Drive.

> [accordion] A tab named ... already exists in the spreadsheet
>
> Tab names must be unique, whatever the case. Choose another **Tab name** or **New tab name**.

> [accordion] ... is the only tab in the spreadsheet
>
> A spreadsheet must keep at least one tab. Add another tab before deleting this one.

> [accordion] Google Sheets rejected the request (HTTP ...)
>
> The error ends with Google's own reason. Check that the connection's Google account can open and edit the spreadsheet.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.