Google Sheets is a cloud-based spreadsheet tool enabling real-time collaboration, data analysis, and integration with other Google Workspace apps
Google Sheets is a cloud-based spreadsheet tool enabling real-time collaboration, data analysis, and integration with other Google Workspace apps On Nagent, Google Sheets is exposed as a fully-configurable spreadsheets integration that any agent can call — 48 actions, 16 triggers, and OAuth authentication. No code is required to wire Google Sheets into your workflow — connect it once via the External Integrations panel and reuse it across every agent you build.
Agent builders use Google Sheets to automate the kinds of tasks spreadsheets teams previously handled manually. Concrete examples — each one is a single agent step in Nagent — include:
Google Sheets also supports 4 event triggers ("Aggregate Metric Changed", "Cell Range Values Changed", "Conditional Format Rule Changed", and more), which lets your Nagent agents react to Google Sheets activity in real time — for example, kicking off a downstream workflow the moment a relevant event fires.
Every action and trigger is paired with a structured input/output schema (visible in the sections below), so when you wire Google Sheets into Helix — our agentic agent builder — the editor knows exactly what each step expects and produces. Configure once, deploy anywhere across your Nagent agents.
Triggers are the entry points of agents built on Nagent — pick one to fire your agent the moment a Google Sheets event happens. Webhook triggers run instantly; poll triggers check on an interval you configure. Each shows its configuration parameters and the payload your agent receives.
GOOGLESHEETS_AGGREGATE_METRIC_CHANGED_TRIGGERTriggers when an aggregate metric (SUM/COUNT/AVG/MIN/MAX) changes in a Google Sheets spreadsheet. This trigger monitors an aggregate calculation on a target column (optionally filtered by a search column/value) and fires when the calculated result changes.
Configuration
Whether the search should be case-sensitive when filtering by search_column and search_value.
Whether the first row contains column headers. If True, column names can be used for search_column and target_column.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The mathematical operation to perform on the target column values. Supported operations: sum, average, count, min, max, percentage.
For percentage operation, the total value to calculate percentage against. If not provided, uses sum of all values in target column.
The column to search in for filtering rows. Can be a letter (e.g., 'A', 'B') or column name from header row (e.g., 'Region', 'Department'). If not provided, all rows in the target column will be aggregated without filtering.
The exact value to search for in the search column. Case-sensitive by default. If not provided (or if search_column is not provided), all rows in the target column will be aggregated without filtering.
The name of the specific sheet within the spreadsheet to monitor. Matching is case-insensitive. If no exact match is found, partial matches will be attempted (e.g., 'overview' will match 'Overview 2025').
The unique identifier of the Google Sheets spreadsheet to monitor. This is the long alphanumeric string found in the spreadsheet URL between '/d/' and '/edit'.
The column to aggregate data from. Can be a letter (e.g., 'C', 'D') or column name from header row (e.g., 'Sales', 'Revenue').
Payload
The current aggregate metric value
ISO timestamp when the change was detected
Type of event that occurred
Number of rows that matched the search condition
The aggregation operation performed
The previous aggregate metric value
Number of values that were processed in the aggregation
Details of the search/filter used to select rows prior to aggregation
The sheet name
The spreadsheet ID
GOOGLESHEETS_CELL_RANGE_VALUES_CHANGED_TRIGGERTriggers when values in a specified A1 range change in Google Sheets. This trigger monitors a specific cell or range of cells and fires when any values change.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The A1 notation of the range to monitor for changes (can be a single cell or multi-cell range). If the sheet name contains spaces or special characters, wrap the sheet name in single quotes.
The unique identifier of the Google Spreadsheet to monitor. This is the long alphanumeric string found in the spreadsheet URL between '/d/' and '/edit'.
Payload
The current values in the range
ISO timestamp when the change was detected
Type of event that occurred
The previous values in the range
The A1 notation of the monitored range
The spreadsheet ID
GOOGLESHEETS_CONDITIONAL_FORMAT_RULE_CHANGED_TRIGGERTriggers when conditional formatting rules change in a Google Spreadsheet. Detects when rules are added, updated, or removed. Uses snapshot-based diffing to detect changes between polls.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
Optional filter: monitor only the sheet with this exact numeric sheetId. If not provided, monitors all sheets. If both sheet_title and sheet_id are provided, sheet_id takes precedence.
Optional filter: monitor only the sheet with this exact title. If not provided, monitors all sheets.
The unique identifier of the Google Spreadsheet to monitor for conditional formatting rule changes
Payload
Type of change: 'added', 'updated', or 'removed'
ISO timestamp when the change was detected
List of rules that changed
The spreadsheet ID
GOOGLESHEETS_DATA_VALIDATION_RULE_CHANGED_TRIGGERTriggers when data validation rules change (added/updated/removed) in a Google Spreadsheet. Uses snapshot-based diffing to detect changes between polls.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
Optional list of A1 ranges to monitor. If omitted, the entire sheet(s) will be monitored.
Optional sheet ID to filter by. If omitted, all sheets will be monitored.
Optional sheet title to filter by. If omitted, all sheets will be monitored.
The unique identifier of the Google Spreadsheet to monitor for data validation rule changes.
Payload
Type of change: 'added', 'updated', or 'removed'
ISO timestamp when the change was detected
List of validation rules that changed
The spreadsheet ID
GOOGLESHEETS_DEVELOPER_METADATA_CHANGED_TRIGGERTriggers when developer metadata entries change (new/updated/removed) in a Google Spreadsheet. Uses snapshot-based diffing to detect changes between polls.
Configuration
The data filters describing the criteria used to determine which DeveloperMetadata entries to monitor. If not specified, monitors all developer metadata.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to monitor for developer metadata changes.
Payload
Type of change: 'created', 'updated', or 'removed'
ISO timestamp when the change was detected
List of metadata items that changed
The spreadsheet ID
GOOGLESHEETS_FILTERED_RANGE_VALUES_CHANGED_TRIGGERPolling trigger that monitors Google Sheets filtered ranges for value changes. Uses snapshot-based diffing to detect when values matching a data filter change. Emits the matched values when changes are detected.
Configuration
List of data filters specifying which ranges to monitor for changes. Each filter can specify either 'a1Range' (e.g., 'Sheet1!A1:B10') or 'gridRange'.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The major dimension that results should use. ROWS returns \[\[1,2\],\[3,4\]\], COLUMNS returns \[\[1,3\],\[2,4\]\]
The unique identifier of the Google Spreadsheet to monitor
How values should be represented in the output
Payload
Type of change detected
ISO timestamp when the change was detected
Current values in the range
Previous values in the range (None if new)
The A1 notation or identifier of the range that changed
The spreadsheet ID
GOOGLESHEETS_NEW_ROWS_TRIGGERSimple polling trigger that monitors Google Sheets for new rows. Detects when new rows are added and returns the complete row data. Perfect for triggering any workflow based on new sheet entries.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The name of the specific sheet within the spreadsheet to monitor
The unique identifier of the Google Spreadsheet to monitor
The row number to start monitoring from (1-indexed, typically 2 to skip headers)
Payload
ISO timestamp when the row was detected
Complete row data as list of strings
The row number in the sheet (1-indexed)
The sheet name
The spreadsheet ID
GOOGLESHEETS_NEW_SHEET_ADDED_TRIGGERPolling trigger that detects when a new sheet is added to a Google Spreadsheet.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to monitor
Payload
ISO timestamp when the new sheet was detected
The name of the new sheet added
The spreadsheet ID
GOOGLESHEETS_NEW_SPREADSHEET_CREATED_TRIGGERTriggers when a new Google Spreadsheet is created. This trigger monitors Google Spreadsheets and fires when new spreadsheets are detected. Uses timestamp filtering to efficiently detect newly created spreadsheets.
Configuration
Whether to include spreadsheets from shared drives you have access to. Defaults to True.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
Maximum number of spreadsheets to check in each poll (1-1000)
Optional search query to filter spreadsheets. Can search by name (name contains 'Budget'), full text content (fullText contains 'sales'), or use complex queries with operators. Leave empty to monitor all spreadsheets.
Payload
Type of event that occurred
The newly created Google Spreadsheet
GOOGLESHEETS_SPREADSHEET_METADATA_CHANGED_TRIGGERPolling trigger that detects when a Google Spreadsheet's metadata changes. Uses snapshot-based diffing to detect any changes in spreadsheet properties, sheets, named ranges, developer metadata, data sources, etc.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to monitor for metadata changes
Payload
List of metadata changes detected
Current metadata snapshot
ISO timestamp when the change was detected
The spreadsheet ID
URL to view the spreadsheet
GOOGLESHEETS_SPREADSHEET_PROPERTIES_CHANGED_TRIGGERPolling trigger that detects when a Google Spreadsheet's top-level properties change. Monitors properties such as title, locale, timeZone, and autoRecalc settings.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to monitor for property changes
Payload
List of properties that changed
ISO timestamp when the change was detected
The spreadsheet ID
URL to view the spreadsheet
GOOGLESHEETS_SPREADSHEET_ROW_CHANGED_TRIGGERTriggers when a looked-up spreadsheet row changes. This trigger monitors a specific row (located by searching for a query value within a user-specified range) and fires when the row's values change, when the row appears, or when the row disappears.
Configuration
If `True`, the query string search is case-sensitive.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
If `True`, strips leading and trailing whitespace from cell values before matching. This helps match cells like ' TOTAL ' or 'TOTAL ' when searching for 'TOTAL'.
Exact text value to find; matches the entire content of a cell in a row.
A1 notation range to search within. Supports cell ranges (e.g., 'Sheet1!A1:D5'), column-only ranges (e.g., 'Sheet1!A:Z'), and row-only ranges (e.g., 'Sheet1!1:1'). Defaults to the first sheet if omitted. IMPORTANT: Sheet names with spaces must be single-quoted (e.g., "'My Sheet'!A1:Z"). Bare sheet names without ranges (e.g., 'Sheet1') are not supported - always specify a range.
Identifier of the Google Spreadsheet to monitor.
Payload
Type of change: 'created' (row appeared), 'updated' (row values changed), or 'deleted' (row disappeared)
The current row data (empty dict if row is not found now)
ISO timestamp when the change was detected
Type of event that occurred
The previous row data (empty dict if row was not found before)
The query used to find the row
The A1 notation range that was searched
The spreadsheet ID
GOOGLESHEETS_SPREADSHEET_SEARCH_MATCH_TRIGGERTriggers when a new spreadsheet appears that matches a saved search. This trigger uses snapshot-based diffing to detect when spreadsheets matching the search criteria are newly created or become visible to the user.
Configuration
Return spreadsheets created after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
Whether to include spreadsheets from shared drives you have access to. Defaults to True.
Whether to include spreadsheets in trash. Defaults to False.
Periodic Interval to Check for Updates & Send a Trigger in Minutes
Maximum number of spreadsheets to check in each poll (1-100)
Return spreadsheets modified after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
Order results by field. Common options: 'modifiedTime desc', 'modifiedTime asc', 'name', 'createdTime desc'
Search query to filter spreadsheets. Behavior depends on the 'search_type' parameter. For advanced searches, use Google Drive query syntax with fields like 'name contains', 'fullText contains', or boolean filters like 'sharedWithMe = true'. DO NOT use spreadsheet IDs as search terms. Leave empty to get all spreadsheets.
How to search: 'name' searches filenames only (prefix matching from the START of filenames), 'content' uses fullText search which searches file content, name, description, and metadata, 'both' explicitly searches both name OR content with an OR condition.
Whether to return only spreadsheets shared with the current user. Defaults to False.
Whether to return only starred spreadsheets. Defaults to False.
Payload
Type of event that occurred
The spreadsheet that matches the search criteria
GOOGLESHEETS_TABLE_QUERY_RESULT_CHANGED_TRIGGERTriggers when the result set of a saved table query changes in Google Sheets. Detects rows added, removed, or updated in the query output. This trigger monitors the result of a SQL query against a Google Sheets table and fires when changes are detected.
Configuration
Whether to return formula text instead of calculated values for formula columns
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to query. This is the long alphanumeric string found in the spreadsheet URL between '/d/' and '/edit'.
SQL SELECT query to execute. The table name is the Google Sheets tab/sheet name (visible at the bottom of the spreadsheet). Supported: SELECT cols FROM table WHERE conditions ORDER BY col LIMIT n. Table names must be quoted with double quotes if they contain spaces or are numeric-only (e.g., SELECT * FROM "My Sheet" or SELECT * FROM "415").
Payload
List of detected changes
ISO timestamp when the change was detected
Type of event that occurred
The spreadsheet ID
The SQL query that was executed
Total number of rows after the change
Total number of rows before the change
GOOGLESHEETS_TABLE_SCHEMA_CHANGED_TRIGGERPolling trigger that detects when a table's schema changes in Google Sheets. Monitors columns added/removed/renamed and inferred type/format changes. Uses snapshot-based diffing to compare schemas between polls.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
Number of rows to sample for type inference
Sheet/tab name if table_name is ambiguous across multiple sheets
The unique identifier of the Google Spreadsheet to monitor
Table name from LIST_TABLES response OR the visible Google Sheets tab name. Use 'auto' to monitor the largest/most prominent table.
Payload
Human-readable summary of the changes
List of column changes detected
Number of columns in current schema
ISO timestamp when the change was detected
Number of columns in previous schema
Sheet name where table is located
The spreadsheet ID
Name of the table that changed
GOOGLESHEETS_WORKSHEET_NAMES_CHANGED_TRIGGERTriggers when the set of worksheet/tab names changes in a Google Spreadsheet. Detects when sheets are added, deleted, or renamed.
Configuration
Periodic Interval to Check for Updates & Send a Trigger in Minutes
The unique identifier of the Google Spreadsheet to monitor
Payload
Type of change: 'added', 'deleted', or 'renamed'
Current list of all worksheet names after the change
ISO timestamp when the change was detected
Previous name if worksheet was renamed (only for renamed events)
The spreadsheet ID
The name of the worksheet that was added, deleted, or involved in the change
Every operation an agent can call against Google Sheets, with input parameters and output schema. Drop these into any step of an agent built in Helix.
GOOGLESHEETS_ADD_SHEETAdds a new sheet to a spreadsheet. Supports three sheet types: GRID, OBJECT, and DATA_SOURCE. SHEET TYPES: - GRID (default): Standard spreadsheet with rows/columns. Use properties to set dimensions, tab color, etc. - OBJECT: Sheet containing a chart. Requires objectSheetConfig with chartSpec (basicChart or pieChart). - DATA_SOURCE: Sheet connected to BigQuery. Requires dataSourceConfig with bigQuery spec and bigquery.readonly OAuth scope. OTHER NOTES: - Sheet names must be unique; use forceUnique=true to auto-append suffix (_2, _3) if name exists - For tab colors, use EITHER rgbColor OR themeColor, not both - Avoid 'index' when creating sheets in parallel (causes errors) - OBJECT sheets are created via addChart with position.newSheet=true - DATA_SOURCE sheets require bigquery.readonly OAuth scope Use cases: Add standard grid sheet, create chart on dedicated sheet, connect to BigQuery data source.
Input parameters
The name for the new sheet tab. Must be unique within the spreadsheet. Example: "Q3 Report", "Sales Data 2025". This is a convenience parameter - alternatively, you can set this via properties.title. Note: sheet_name is also accepted as an alias for title.
Advanced sheet properties (grid dimensions, tab color, position, etc.). For simple cases, just use the 'title' parameter directly. Use this for additional customization.
When True (default), automatically ensures the sheet name is unique by appending a numeric suffix (e.g., '_2', '_3') if the requested name already exists. This makes the action resilient to retries and parallel workflows. When False, the action fails with an error if a sheet with the same name already exists.
REQUIRED. Cannot be empty. The ID of the target spreadsheet where the new sheet will be added. This is the long alphanumeric string in the Google Sheet URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). Use 'Search Spreadsheets' action to find the spreadsheet ID by name if you don't have it.
Configuration for creating a DATA_SOURCE sheet. DATA_SOURCE sheets connect to external data sources like BigQuery. The API uses addDataSource request which automatically creates the associated sheet. IMPORTANT: Requires additional OAuth scope: bigquery.readonly
Configuration for creating an OBJECT sheet (a sheet containing a chart). To create an OBJECT sheet, you must provide chart configuration. The API uses addChart with position.newSheet=true to create the chart on its own sheet.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_AGGREGATE_COLUMN_DATASearches for rows where a specific column matches a value and performs mathematical operations on data from another column.
Input parameters
The mathematical operation to perform on the target column values.
The name of the specific sheet within the spreadsheet. Matching is case-insensitive. If no exact match is found, partial matches will be attempted (e.g., 'overview' will match 'Overview 2025').
The exact value to search for in the search column. Case-sensitive by default. If not provided (or if search_column is not provided), all rows in the target column will be aggregated without filtering.
The column to search in for filtering rows. Can be a letter (e.g., 'A', 'B') or column name from header row (e.g., 'Region', 'Department'). If not provided, all rows in the target column will be aggregated without filtering.
The column to aggregate data from. Can be a letter (e.g., 'C', 'D') or column name from header row (e.g., 'Sales', 'Revenue').
Whether the search should be case-sensitive.
Whether the first row contains column headers. If True, column names can be used for search_column and target_column.
The unique identifier of the Google Sheets spreadsheet.
For percentage operation, the total value to calculate percentage against. If not provided, uses sum of all values in target column.
Extra column=value conditions applied with AND logic on top of search_column/search_value. Use this to filter on multiple columns simultaneously. Example: \[{"column": "Region", "value": "APAC"}\] combined with search_column=Product/search_value=Beacon returns only rows where Product=Beacon AND Region=APAC.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_APPEND_DIMENSIONTool to append new rows or columns to a sheet, increasing its size. Use when you need to add empty rows or columns to an existing sheet.
Input parameters
The number of rows or columns to append.
The numeric ID of the sheet (not the sheet name). This is a non-negative integer found in the sheet's URL as the 'gid' parameter (e.g., gid=0) or in the sheet properties. The first sheet in a spreadsheet typically has sheet_id=0.
Specifies whether to append rows or columns.
The ID of the spreadsheet.
Limits the ranges of the spreadsheet to include in the response.
True if grid data should be included in the response (if includeSpreadsheetInResponse is true).
True if the updated spreadsheet should be included in the response.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_AUTO_RESIZE_DIMENSIONSAuto-fit column widths or row heights for a dimension range using batchUpdate.autoResizeDimensions. Use when you need to automatically adjust row heights or column widths to fit content after writing data.
Input parameters
The numeric ID of the sheet to resize. Either sheet_id or sheet_name must be provided. If both are provided, sheet_name takes precedence and will be resolved to sheet_id.
The dimension to auto-resize. Use 'ROWS' to auto-fit row heights or 'COLUMNS' to auto-fit column widths.
The zero-based end index of the dimension range to resize (exclusive). Must be greater than start_index. For example, to resize columns A-C, use start_index=0 and end_index=3.
The name of the sheet to resize. Either sheet_id or sheet_name must be provided. Using sheet_name is recommended as it's more intuitive. If both sheet_id and sheet_name are provided, sheet_name takes precedence.
The zero-based start index of the dimension range to resize (inclusive). For columns, 0 = column A. For rows, 0 = row 1.
The ID of the spreadsheet containing the sheet to resize.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_BATCH_CLEAR_VALUES_BY_DATA_FILTERClears one or more ranges of values from a spreadsheet using data filters. The caller must specify the spreadsheet ID and one or more DataFilters. Ranges matching any of the specified data filters will be cleared. Only values are cleared -- all other properties of the cell (such as formatting, data validation, etc..) are kept.
Input parameters
The DataFilters used to determine which ranges to clear.
The ID of the spreadsheet to update.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_BATCH_GETRetrieves data from specified cell ranges in a Google Spreadsheet.
Input parameters
A list of cell ranges in A1 notation from which to retrieve data. If this list is omitted, empty, or contains only empty strings, all data from the first sheet of the spreadsheet will be fetched. Empty strings in the list are automatically filtered out. Supported formats: (1) Bare sheet name like 'Sheet1' to get all data from that sheet, (2) Sheet with range like 'Sheet1!A1:B2', (3) Just cell reference like 'A1:B2' (uses first sheet). For sheet names with spaces or special characters, enclose in single quotes (e.g., "'My Sheet'" or "'My Sheet'!A1:B2"). IMPORTANT: For large sheets, always use bounded ranges with explicit row limits (e.g., 'Sheet1!A1:Z10000' instead of 'Sheet1!A:Z'). Unbounded column ranges like 'A:Z' on sheets with >10,000 rows may cause timeouts or errors. If you need all data from a large sheet, fetch in chunks of 10,000 rows at a time.
The major dimension for organizing data in results.
The unique identifier of the Google Spreadsheet from which data will be retrieved. This is the ID found in the spreadsheet URL after /d/. You can provide either the spreadsheet ID directly or a full Google Sheets URL (the ID will be extracted automatically).
How values should be rendered in the output. FORMATTED_VALUE: Values are calculated and formatted (default). UNFORMATTED_VALUE: Values are calculated but not formatted. FORMULA: Values are not calculated; the formula is returned instead.
How dates and times should be rendered in the output. SERIAL_NUMBER: Dates are returned as serial numbers (default). FORMATTED_STRING: Dates returned as formatted strings.
Indicates whether empty strings were filtered from the response.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_BATCH_UPDATEDEPRECATED: Use GOOGLESHEETS_VALUES_UPDATE instead. Write values to ONE range in a Google Sheet, or append as new rows if no start cell is given. IMPORTANT - This tool does NOT accept the Google Sheets API's native batch format: - WRONG: {"data": \[{"range": "...", "values": \[\[...\]\]}\], ...} - CORRECT: {"sheet_name": "...", "values": \[\[...\]\], "first_cell_location": "...", ...} To update MULTIPLE ranges, make SEPARATE CALLS to this tool for each range. Features: - Auto-expands grid for large datasets (prevents range errors) - Set first_cell_location to write at a specific position (e.g., "A1", "B5") - Omit first_cell_location to append values as new rows at the end Requirements: Target sheet must exist and spreadsheet must contain at least one worksheet.
Input parameters
A 2D array of cell values where each inner array represents a row. Values can be strings, numbers, booleans, or None/null for empty cells. Ensure columns are properly aligned across rows.
The name of the specific sheet (tab) within the spreadsheet to update (required, separate from cell reference). Case-insensitive matching is supported (e.g., 'sheet1' will match 'Sheet1'). Note: Default sheet names are locale-dependent (e.g., 'Sheet1' in English, 'Foglio1' in Italian, 'Hoja 1' in Spanish, '시트1' in Korean, 'Feuille 1' in French). If you specify a common default name like 'Sheet1' and it doesn't exist, the action will automatically use the first sheet in the spreadsheet.
The unique identifier of the Google Sheets spreadsheet to be updated. Must be an alphanumeric string (with hyphens and underscores allowed) typically 44 characters long. Can be found in the spreadsheet URL between '/d/' and '/edit'. Example: 'https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit' has ID '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'.
How input data should be interpreted. 'USER_ENTERED': Values are parsed as if typed by a user (e.g., strings may become numbers/dates, formulas are calculated). 'RAW': Values are stored exactly as provided without parsing (e.g., '123' stays as string, '=SUM(A1:B1)' is not calculated).
The starting cell for the update range, specified as a single cell in A1 notation WITHOUT sheet prefix (e.g., 'A1', 'B2', 'AA931'). The update will extend from this cell to the right and down based on the provided values. Sheet name must be provided separately in the 'sheet_name' field. If omitted or set to null, values are appended as new rows to the sheet. Note: Use only a single cell reference (e.g., 'AA931'), NOT a range (e.g., 'AA931:AF931') or sheet-prefixed notation (e.g., 'Sheet1!A1').
If set to True, the response will include the updated values in the 'spreadsheet.responses\[\].updatedData' field. The updatedData object contains 'range' (A1 notation), 'majorDimension' (ROWS), and 'values' (2D array of the actual cell values after the update).
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_BATCH_UPDATE_VALUES_BY_DATA_FILTERTool to update values in ranges matching data filters. Use when you need to update specific data in a Google Sheet based on criteria rather than fixed cell ranges.
Input parameters
The new values to apply to the spreadsheet. If more than one range is matched by the specified DataFilter the specified values are applied to all of those ranges. Can be provided as a JSON string or as a list of DataFilterValueRange objects.
The ID of the spreadsheet to update.
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing. USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with '=' become formulas, etc.). INPUT_VALUE_OPTION_UNSPECIFIED: Default input value option is not specified.
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
Determines how dates, times, and durations in the response should be rendered. This is ignored if responseValueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CLEAR_BASIC_FILTERTool to clear the basic filter from a sheet. Use when you need to remove an existing basic filter from a specific sheet within a Google Spreadsheet.
Input parameters
The ID of the sheet on which the basic filter should be cleared.
The ID of the spreadsheet.
Limits the ranges included in the response spreadsheet. Only applicable when include_spreadsheet_in_response is true.
True if grid data should be returned in the response. Only applicable when include_spreadsheet_in_response is true.
Determines if the update response should include the spreadsheet resource.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CLEAR_VALUESClears cell content (preserving formatting and notes) from a specified A1 notation range in a Google Spreadsheet; the range must correspond to an existing sheet and cells.
Input parameters
The A1 notation of the range to clear values from (e.g., 'Sheet1!A1:B2', 'MySheet!C:C', or 'A1:D5'). If the sheet name is omitted (e.g., 'A1:B2'), the operation applies to the first visible sheet.
The unique identifier of the Google Spreadsheet from which to clear values. This ID can be found in the URL of the spreadsheet.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CREATE_CHARTCreate a chart in a Google Sheets spreadsheet using the specified data range and chart type. Conditional requirements: - Provide either a simple chart via chart_type + data_range (basicChart), OR supply a full chart_spec supporting all chart types. Exactly one approach should be used. - When using chart_spec, set exactly one of the union fields (basicChart | pieChart | bubbleChart | candlestickChart | histogramChart | waterfallChart | treemapChart | orgChart | scorecardChart).
Input parameters
Optional title for the chart.
The numeric sheetId (not the sheet name/title) of the worksheet where the chart will be created. This is a unique integer identifier for the sheet within the spreadsheet. The first/default sheet typically has sheetId=0. IMPORTANT: Use 'Get Spreadsheet Info' action to retrieve valid sheetIds - look for sheets\[\].properties.sheetId in the response. The sheetId must exist in the target spreadsheet; using an ID from a different spreadsheet will fail.
Optional subtitle for the chart.
Optional full ChartSpec object to send to the Google Sheets API. Use this to support ALL chart types and advanced options. Must set exactly one of: basicChart, pieChart, bubbleChart, candlestickChart, histogramChart, treemapChart, waterfallChart, orgChart, scorecardChart. See https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/charts#ChartSpec.
The type of chart to create. Case-insensitive. Supported types: BAR, LINE, AREA, COLUMN, SCATTER, COMBO, STEPPED_AREA (basic charts with axes), PIE (pie/donut charts), HISTOGRAM, BUBBLE, CANDLESTICK (requires 4+ data columns for low/open/close/high), TREEMAP, WATERFALL, ORG (organizational charts), SCORECARD. Each chart type uses its appropriate Google Sheets API spec structure. For advanced customization, provide chart_spec instead.
A single contiguous range of data for the chart in A1 notation (e.g., 'A1:C10' or 'Sheet1!B2:D20'). Must be a single continuous range - comma-separated multi-ranges (e.g., 'A1:A10,C1:C10') are not supported. When chart_spec is not provided, the first column is used as the domain/labels and the remaining columns as series. IMPORTANT: PIE charts require at least 2 columns - the first column for category labels (domain) and the second column for numeric values (series). Single-column ranges are not supported for PIE charts.
Optional title for the X-axis.
Optional title for the Y-axis.
Red component of chart background color (0.0-1.0). If not specified, uses default.
The unique identifier of the Google Sheets spreadsheet where the chart will be created. Must be the actual spreadsheet ID from the URL (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'), NOT the spreadsheet name or title. Find it in the URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit
Blue component of chart background color (0.0-1.0). If not specified, uses default.
Position of the chart legend. Options: BOTTOM_LEGEND, TOP_LEGEND, LEFT_LEGEND, RIGHT_LEGEND, NO_LEGEND.
Green component of chart background color (0.0-1.0). If not specified, uses default.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CREATE_GOOGLE_SHEET1Creates a new Google Spreadsheet in Google Drive. If a title is provided, the spreadsheet will be created with that name. If no title is provided, Google will create a spreadsheet with a default name like 'Untitled spreadsheet'. Optionally create the spreadsheet in a specific folder by providing either: - folder_id: The Google Drive folder ID (preferred, unambiguous) - folder_name: The folder name (searches for exact match; if multiple folders match, returns choices) If neither folder_id nor folder_name is provided, the spreadsheet is created in the root Drive folder.
Input parameters
The title for the new Google Sheet. If omitted, Google will create a spreadsheet with a default name like 'Untitled spreadsheet'.
Google Drive folder ID where the spreadsheet should be created. If provided, the spreadsheet will be moved to this folder after creation. Takes precedence over folder_name.
Google Drive folder name where the spreadsheet should be created. If provided and folder_id is not provided, the action will search for a folder with this exact name. If multiple folders match, you'll receive a list to choose from. If no folder matches, an error is returned.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CREATE_SPREADSHEET_COLUMNCreates a new column in a Google Spreadsheet. Specify the target sheet using sheet_id (numeric) or sheet_name (text). If neither is provided, defaults to the first sheet (sheet_id=0).
Input parameters
The numeric identifier of the specific sheet (tab) within the spreadsheet. Defaults to 0 (the first sheet) if neither sheet_id nor sheet_name is provided. Use GOOGLESHEETS_GET_SHEET_NAMES or GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE to obtain the sheet_id from a sheet name.
The name (title) of the sheet/tab where the column will be added. If provided, the action will look up the sheet_id automatically. If both sheet_id and sheet_name are provided, sheet_id takes precedence.
The 0-based index at which the new column will be inserted. For example, an index of 0 inserts the column before the current first column (A), and an index of 1 inserts it between the current columns A and B.
The unique identifier of the Google Spreadsheet where the column will be created.
Limits the ranges of the spreadsheet to include in the response. Only used if includeSpreadsheetInResponse is true.
If true, the new column inherits properties (e.g., formatting, width) from the column immediately to its left (the preceding column). If false (default), it inherits from the column immediately to its right (the succeeding column). This is ignored if there is no respective preceding or succeeding column.
If true, grid data will be included in the response (only used if includeSpreadsheetInResponse is true).
If true, the updated spreadsheet will be included in the response. Defaults to true if not specified.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_CREATE_SPREADSHEET_ROWInserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above.
Input parameters
The numeric identifier of the sheet (tab) within the spreadsheet where the row will be inserted. This ID (gid) is found in the URL of the spreadsheet (e.g., '0' for the first sheet). Either sheet_id or sheet_name must be provided.
The human-readable name of the sheet (tab) within the spreadsheet where the row will be inserted (e.g., 'Sheet1'). Either sheet_id or sheet_name must be provided. If both are provided, sheet_id takes precedence.
The 0-based index at which the new row should be inserted. For example, an index of 0 inserts the row at the beginning of the sheet. If the index is greater than the current number of rows, the row is appended.
The unique identifier of the Google Spreadsheet. Can be provided as the ID (e.g., '1qpyC0XzHc_-_d824s2VfopkHh7D0jW4aXCS1D_AlGA') or as a full URL (the ID will be extracted automatically).
Limits the ranges included in the response spreadsheet. Only meaningful when include_spreadsheet_in_response is True. Use A1 notation (e.g., \['Sheet1!A1:D10'\]).
If True, the newly inserted row will inherit formatting and properties from the row immediately preceding its insertion point. If False, it will have default formatting.
If True, grid data will be included in the response spreadsheet. Only meaningful when include_spreadsheet_in_response is True. Default is False.
If True, the response will include the full updated Spreadsheet resource. Default behavior includes the spreadsheet when this parameter is not specified.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_DELETE_DIMENSIONTool to delete specified rows or columns from a sheet in a Google Spreadsheet. Use when you need to remove a range of rows or columns.
Input parameters
The unique numeric ID of the sheet (not the index/position). This ID is assigned by Google Sheets and does not change when sheets are reordered. Use GOOGLESHEETS_GET_SPREADSHEET_INFO to find the sheet ID, or use sheet_name instead. Either sheet_id or sheet_name must be provided.
The dimension to delete (ROWS or COLUMNS).
The zero-based end index of the range to delete, exclusive. Must be greater than start_index and at most equal to the sheet's current row/column count. Note: Cannot delete all rows or columns from a sheet - at least one row and one column must remain.
The name/title of the sheet from which to delete the dimension. Using sheet_name is recommended as it's more intuitive than sheet_id. Either sheet_id or sheet_name must be provided.
The zero-based start index of the range to delete, inclusive. Must be less than end_index and within the sheet's current row/column count. Note: Cannot delete all rows or columns from a sheet - at least one row and one column must remain.
The ID of the spreadsheet.
Limits the ranges of cells included in the response spreadsheet.
The details for the delete dimension request object.
True if grid data should be returned. This parameter is ignored if a field mask was set in the request.
Determines if the update response should include the spreadsheet resource.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_DELETE_SHEETTool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document.
Input parameters
The ID of the sheet to delete. Note: A spreadsheet must contain at least one sheet, so you cannot delete the last remaining sheet. If the sheet is of DATA_SOURCE type, the associated DataSource is also deleted.
The ID of the spreadsheet from which to delete the sheet.
Limits which ranges are returned when includeSpreadsheetInResponse is true. Only meaningful if includeSpreadsheetInResponse is set to true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B10').
True if grid data should be returned in the response spreadsheet. Only meaningful when includeSpreadsheetInResponse is true and no field mask is set on the request.
Determines if the spreadsheet resource should be returned in the response. If true, the response includes the updated spreadsheet resource with all its sheets, properties, and metadata.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_EXECUTE_SQLDEPRECATED: Use direct Google Sheets actions instead: - GOOGLESHEETS_VALUES_GET / GOOGLESHEETS_BATCH_GET for reads - GOOGLESHEETS_VALUES_UPDATE / GOOGLESHEETS_UPDATE_VALUES_BATCH / GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND for writes Execute SQL queries against Google Sheets tables. Supports SELECT, INSERT, UPDATE, DELETE operations and WITH clauses (CTEs) with familiar SQL syntax. Tables are automatically detected and mapped from the spreadsheet structure.
Input parameters
Complete SQL query to execute. Must begin with SELECT, INSERT, UPDATE, DELETE, or WITH. Supports Common Table Expressions (CTEs) using WITH clause for complex queries. Note: WITH clauses require the sqlglot library for full support; simple SELECT/INSERT/UPDATE/DELETE operations work without it. Use table names (sheet names) in FROM/INTO clauses, not A1 range notation. The query must include proper SQL clauses (e.g., SELECT columns FROM table, not just a column name or condition). Example: SELECT * FROM "Sheet1" WHERE A = 'value' (correct) instead of just A = 'value' (incorrect).
Preview changes without applying them (for write operations)
For DELETE operations: 'clear' preserves row structure, 'remove_rows' shifts data up
The unique alphanumeric ID of the Google Spreadsheet extracted from the URL. Format: A long string of letters, numbers, hyphens, and underscores (typically 44 characters). Find it in the URL: https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit. Must be a valid ID - values like 'auto' are NOT valid and will fail.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_FIND_REPLACETool to find and replace text in a Google Spreadsheet. Use when you need to fix formula errors, update values, or perform bulk text replacements across cells. Common use cases: - Fix #ERROR! cells by replacing with empty string or correct formula - Update old values with new ones across multiple cells - Fix formula references or patterns - Clean up data formatting issues
Input parameters
The text to find. Can be a literal string or a regular expression pattern.
A1 notation range string to search within (e.g., 'A1:B10', 'Sheet1!A1:B10'). When using A1 notation with a sheet name, you must also provide range_sheet_id to specify the numeric sheet ID (the API requires numeric IDs). Alternatively, use the GridRange parameters (range_sheet_id with optional row/column indices) for explicit numeric control. Mutually exclusive with sheet_id and all_sheets.
The text to replace the found instances with.
The numeric ID of the sheet to search the entire sheet (e.g., 0 for the first sheet). Mutually exclusive with sheet_name, range/range_sheet_id parameters, and all_sheets. You must specify exactly one scope: either sheet_id (entire sheet), sheet_name, range/range_sheet_id (specific range), or all_sheets.
Whether to search across all sheets in the spreadsheet. Mutually exclusive with sheet_id and range parameters.
Whether the search should be case-sensitive.
The name/title of the sheet (tab) to search within (e.g., 'Sheet1', 'Sales Data'). The sheet name will be resolved to its numeric sheet ID. Mutually exclusive with sheet_id, range/range_sheet_id parameters, and all_sheets.
The end row (0-indexed, exclusive) of the range. Only used when range_sheet_id is provided without a 'range' parameter.
The numeric sheet ID for a GridRange-based search. Required when using the 'range' parameter with A1 notation. Can also be used alone or with row/column index parameters to define a specific range. Mutually exclusive with sheet_id and all_sheets.
Whether to treat the find text as a regular expression.
The ID of the spreadsheet to update.
The start row (0-indexed, inclusive) of the range. Only used when range_sheet_id is provided without a 'range' parameter.
The end column (0-indexed, exclusive) of the range. Column A = 0, B = 1, etc. Only used when range_sheet_id is provided without a 'range' parameter.
Whether to include cells with formulas in the search. If true, formulas are searched and can be replaced. If false, only cell values (not formulas) are searched. If not specified, the default API behavior applies (both formulas and values are searched).
Whether to match only cells that contain the entire search term.
The start column (0-indexed, inclusive) of the range. Column A = 0, B = 1, etc. Only used when range_sheet_id is provided without a 'range' parameter.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_FIND_WORKSHEET_BY_TITLEDEPRECATED: Use GetSpreadsheetInfo instead. Finds a worksheet by its exact, case-sensitive title within a Google Spreadsheet; returns a boolean indicating if found and the matched worksheet's metadata when found, or None when not found.
Input parameters
The unique identifier of the Google Spreadsheet from the URL (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Important: This is NOT the spreadsheet's display name/title. It is the long alphanumeric string (typically 40-45 characters) from the URL containing only letters, numbers, hyphens, and underscores.
The exact, case-sensitive title of the worksheet (tab name) to find.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_FORMAT_CELLApplies text and background cell formatting to a specified range in a Google Sheets worksheet.
Input parameters
Red component of the background color (0.0-1.0).
Blue component of the background color (0.0-1.0).
Apply bold formatting.
Green component of the background color (0.0-1.0).
OPTION 1: Cell range in A1 notation (RECOMMENDED). Supports: single cells ('A1', 'F9'), cell ranges ('A1:B5'), entire columns ('A', 'I:J'), entire rows ('1', '1:5'). Also accepts sheet-prefixed ranges ('Sheet1!A1', 'Instagram Calendar!A1:E1') for convenience - if provided, the sheet prefix is stripped and ignored. The actual sheet used is determined by the sheet_name or worksheet_id parameter. Provide EITHER this field OR all four index fields below, not both.
Apply italic formatting.
Font size in points.
Apply underline formatting.
The worksheet name/title (e.g., 'Sheet1', 'Q3 Report'). Provide either this field OR worksheet_id, not both. If both are provided, sheet_name takes precedence and will be resolved to worksheet_id.
The worksheet identifier. Accepts EITHER: (1) The sheetId from the Google Sheets API (a large number like 1534097477, obtainable via GOOGLESHEETS_GET_SPREADSHEET_INFO), OR (2) The 0-based positional index of the worksheet (0 for first sheet, 1 for second, etc.). The action will first try to match by sheetId, then fall back to matching by index. Defaults to 0 (first sheet). Provide either this field OR sheet_name, not both.
OPTION 2: 0-based index of the row AFTER the last row (exclusive). Required if 'range' is not provided. Must provide ALL four index fields together.
Apply strikethrough formatting.
Identifier of the Google Sheets spreadsheet.
OPTION 2: 0-based row index (row 1 = index 0, row 9 = index 8). Required if 'range' is not provided. Must provide ALL four index fields together.
OPTION 2: 0-based index of the column AFTER the last column (exclusive). Required if 'range' is not provided. Must provide ALL four index fields together.
OPTION 2: 0-based column index (A = 0, B = 1, F = 5). Required if 'range' is not provided. Must provide ALL four index fields together.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_BATCH_VALUESDEPRECATED: Use GOOGLESHEETS_BATCH_GET instead. Tool to return one or more ranges of values from a spreadsheet. Use when you need to retrieve data from multiple ranges in a single request.
Input parameters
The A1 notation or R1C1 notation of the ranges to retrieve values from. Specify one or more ranges (e.g., \['Sheet1!A1:B10', 'Sheet2!C1:D5'\]). For sheet names with spaces or special characters, wrap in single quotes (e.g., "'My Sheet'!A1:B10").
The ID of the spreadsheet to retrieve data from. This is the unique identifier found in the spreadsheet URL between '/d/' and '/edit' (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms').
The major dimension for results.
How values should be rendered in the output.
How dates, times, and durations should be represented in the output.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_CONDITIONAL_FORMAT_RULESList conditional formatting rules for each sheet (or a selected sheet) in a normalized, easy-to-edit form. Use when you need to view, audit, or prepare to modify conditional format rules.
Input parameters
Optional filter: return rules only for the sheet with this exact numeric sheetId. If not provided, returns rules for all sheets. If both sheet_title and sheet_id are provided, sheet_id takes precedence.
Optional filter: return rules only for the sheet with this exact title. If not provided, returns rules for all sheets.
Unique identifier of the Google Spreadsheet, typically found in its URL.
True if tables should be excluded in the banded ranges. False if not set.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_DATA_VALIDATION_RULESTool to extract data validation rules from a Google Sheets spreadsheet. Use when you need to understand dropdown lists, allowed values, custom formulas, or other validation constraints for cells.
Input parameters
Optional list of A1 ranges to scan. If omitted, the entire sheet(s) will be scanned. WARNING: Scanning entire large sheets may be slow.
Optional sheet ID to filter by. If omitted, all sheets will be scanned.
Optional sheet title to filter by. If omitted, all sheets will be scanned.
If true, include cells without validation rules in the output. Default is false.
The ID of the spreadsheet to request.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_SHEET_NAMESLists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations.
Input parameters
When True, hidden sheets will be excluded from the results. When False (default), all sheets including hidden ones are returned. Hidden sheets are sheets that have been hidden via the 'Hide sheet' option in Google Sheets UI.
The unique identifier of the Google Spreadsheet (alphanumeric string, typically 44 characters). Extract only the ID portion from URLs - do not include leading/trailing slashes, '/edit' suffixes, query parameters, or URL fragments. From 'https://docs.google.com/spreadsheets/d/1qpyC0XzvTcKT6EISywY/edit#gid=0', use only '1qpyC0XzvTcKT6EISywY'.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_SPREADSHEET_BY_DATA_FILTERReturns the spreadsheet at the given ID, filtered by the specified data filters. Use this tool when you need to retrieve specific subsets of data from a Google Sheet based on criteria like A1 notation, developer metadata, or grid ranges. Important: This action is designed for filtered data retrieval. While it accepts empty filters and returns full metadata in that case, GOOGLESHEETS_GET_SPREADSHEET_INFO is the recommended action for unfiltered spreadsheet retrieval.
Input parameters
The DataFilters used to select which ranges to retrieve. Supports A1 notation (e.g., 'Sheet1!A1:B2'), developer metadata lookup, or grid range filters. If empty or omitted, returns full spreadsheet metadata. Recommended: Use GOOGLESHEETS_GET_SPREADSHEET_INFO for unfiltered retrieval as it is the dedicated action for that purpose.
The ID of the spreadsheet to request.
True if grid data should be returned. Ignored if a field mask is set.
True if tables should be excluded in the banded ranges. False if not set.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_SPREADSHEET_INFORetrieves metadata for a Google Spreadsheet using its ID. By default, returns essential information (ID, title, sheet properties) to avoid payload size issues. Use the fields parameter for comprehensive metadata or specific fields.
Input parameters
Optional. Field mask specifying which fields to return. Uses Google's field mask syntax (comma-separated, dot-notation for nested fields). If not specified, a default mask returning common fields (spreadsheet ID, title, sheet properties) is applied to avoid payload size issues. For full metadata, use '*' (not recommended for large spreadsheets). When set, includeGridData is ignored. Examples: 'sheets.properties(sheetId,title)', 'properties.title,sheets.properties.sheetId'.
Optional. The ranges to retrieve from the spreadsheet, specified using A1 notation (e.g., 'Sheet1!A1:D5', 'Sheet2!A1:C4'). Multiple ranges can be requested simultaneously. If not specified, metadata for the entire spreadsheet is returned without grid data.
Required. The Google Sheets spreadsheet ID or full URL. Accepts either the ID alone (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms') or a full Google Sheets URL (e.g., 'https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit'). The ID will be automatically extracted from URLs. Note: Published/embedded URLs (containing '/d/e/2PACX-...') are not supported.
Optional. If true, grid data will be returned. This parameter is ignored if a field mask was set in the request. When false or not specified, only metadata is returned without cell values.
Optional. If true, tables within banded ranges will be omitted from the response. Default is false when not specified.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_GET_TABLE_SCHEMADEPRECATED: Use GOOGLESHEETS_GET_SHEET_NAMES and GOOGLESHEETS_GET_SPREADSHEET_INFO for sheet structure metadata, and GOOGLESHEETS_VALUES_GET for direct range inspection. This action is used to get the schema of a table in a Google Spreadsheet, call this action to get the schema of a table in a spreadsheet BEFORE YOU QUERY THE TABLE. Analyze table structure and infer column names, types, and constraints. Uses statistical analysis of sample data to determine the most likely data type for each column. Call this action after calling the LIST_TABLES action to get the schema of a table in a spreadsheet.
Input parameters
Sheet/tab name if table_name is ambiguous across multiple sheets
Table name from LIST_TABLES response OR the visible Google Sheets tab name (e.g., 'Sales Data', 'Projections'). Use 'auto' to analyze the largest/most prominent table.
Number of rows to sample for type inference
The unique identifier of the Google Spreadsheet. Must be a valid Google Sheets ID (typically a 44-character alphanumeric string). Do NOT use 'auto' - only 'table_name' supports auto-detection. You can get this ID from the spreadsheet URL or from SEARCH_SPREADSHEETS action.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_INSERT_DIMENSIONTool to insert new rows or columns into a sheet at a specified location. Use when you need to add empty rows or columns within an existing Google Sheet.
Input parameters
The ID of the spreadsheet to update.
Limits the ranges of the spreadsheet to include in the response.
The details for the insert dimension request.
True if grid data should be included in the response (if includeSpreadsheetInResponse is true).
True if the updated spreadsheet should be included in the response.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_LIST_TABLESDEPRECATED: Use GOOGLESHEETS_GET_SHEET_NAMES for tab discovery and GOOGLESHEETS_GET_SPREADSHEET_INFO for full sheet metadata. This action is used to list all tables in a Google Spreadsheet, call this action to get the list of tables in a spreadsheet. Discover all tables in a Google Spreadsheet by analyzing sheet structure and detecting data patterns. Uses heuristic analysis to find header rows, data boundaries, and table structures.
Input parameters
Minimum number of data rows to consider a valid table
Minimum number of columns to consider a valid table
Minimum confidence score (0.0-1.0) to consider a valid table
The actual Google Spreadsheet ID (not a placeholder or spreadsheet name). Find it in the spreadsheet URL: https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit. It is the alphanumeric string between '/d/' and '/edit' (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). IMPORTANT: Do NOT pass the spreadsheet name - only pass the alphanumeric ID from the URL. Do NOT pass template placeholders like '{{spreadsheet_id}}', '<spreadsheet_id>', or 'your-spreadsheet-id-here'.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_LOOKUP_SPREADSHEET_ROWFinds the first row in a Google Spreadsheet where a cell's entire content exactly matches the query string, searching within a specified A1 notation range or the first sheet by default.
Input parameters
Exact text value to find; matches the entire content of a cell in a row.
A1 notation range to search within. Supports cell ranges (e.g., 'Sheet1!A1:D5'), column-only ranges (e.g., 'Sheet1!A:Z'), and row-only ranges (e.g., 'Sheet1!1:1'). Defaults to the first sheet if omitted. IMPORTANT: Sheet names with spaces must be single-quoted (e.g., "'My Sheet'!A1:Z"). Bare sheet names without ranges (e.g., 'Sheet1') are not supported - always specify a range.
If `True`, the query string search is case-sensitive.
Identifier of the Google Spreadsheet to search.
How cell values are rendered in the returned row data. unformatted: raw values without display formatting — dates appear as serial numbers, e.g. 46009.47 (default, keeps consistency with UPSERT). formatted: display-formatted values — dates appear as strings, e.g. '2025-12-18'. formula: raw formulas instead of computed values.
If `True`, strips leading and trailing whitespace from cell values before matching. This helps match cells like ' TOTAL ' or 'TOTAL ' when searching for 'TOTAL'.
How dates and times are represented. FORMATTED_STRING: human-readable strings (e.g. '2025-12-18 11:17'). SERIAL_NUMBER: Excel-style serial numbers. Works with all value_render_option settings.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_MUTATE_CONDITIONAL_FORMAT_RULESAdd, update, delete, or reorder conditional format rules on a Google Sheet. Use when you need to create, modify, or remove conditional formatting without manually building batchUpdate requests. Supports four operations: ADD (create new rule), UPDATE (replace existing rule), DELETE (remove rule), MOVE (reorder rules by changing index).
Input parameters
Conditional format rule specification.
Zero-based index for the operation. Required for UPDATE, DELETE, MOVE. Optional for ADD (defaults to end of list).
The unique numeric identifier of the sheet/tab to modify (NOT a zero-based index). This is a specific ID assigned by Google Sheets when the sheet is created, not the position of the sheet. You MUST first call GOOGLESHEETS_GET_SPREADSHEET_INFO to retrieve the actual sheetId values from the 'sheets' array in the response. Common mistake: Do not assume sheet_id=0 exists - while some spreadsheets may have a sheet with ID 0, many do not.
Destination index for MOVE operation. Required when operation is MOVE.
Operation type: ADD (add new rule), UPDATE (replace rule), DELETE (remove rule), MOVE (change rule order/index).
The ID of the spreadsheet containing the sheet to modify. Found in the Google Sheets URL between '/d/' and '/edit'.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_QUERY_TABLEDEPRECATED: Use GOOGLESHEETS_VALUES_GET / GOOGLESHEETS_BATCH_GET for table reads and GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW for row lookup/filter workflows. Execute SQL-like SELECT queries against Google Spreadsheet tables. Table names correspond to sheet/tab names visible at the bottom of the spreadsheet. Use GOOGLESHEETS_LIST_TABLES first to discover available table names if unknown. Supports WHERE conditions, ORDER BY, LIMIT clauses.
Input parameters
SQL SELECT query. The table name is the Google Sheets tab/sheet name (visible at the bottom of the spreadsheet). Use GOOGLESHEETS_LIST_TABLES to discover available table names if unknown. Supported: SELECT cols FROM table WHERE conditions ORDER BY col LIMIT n. Table names must be quoted with double quotes if they contain spaces or are numeric-only (e.g., SELECT * FROM "My Sheet" or SELECT * FROM "415").
The unique identifier of a native Google Sheets file. Found in the spreadsheet URL after /d/ (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). Only native Google Sheets files (MIME type: application/vnd.google-apps.spreadsheet) are supported. Files uploaded to Google Drive that are not native Google Sheets (such as Excel .xlsx files, PDFs, or Google Docs) will not work even if they can be viewed in Google Sheets.
Whether to return formula text instead of calculated values for formula columns
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SEARCH_DEVELOPER_METADATATool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters.
Input parameters
The data filters describing the criteria used to determine which DeveloperMetadata entries to return.
The ID of the spreadsheet to retrieve metadata from.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SEARCH_SPREADSHEETSSearch for Google Spreadsheets using various filters including name, content, date ranges, and more.
Input parameters
Search query to filter spreadsheets. Behavior depends on the 'search_type' parameter. For advanced searches, use Google Drive query syntax with fields like 'name contains', 'fullText contains', or boolean filters like 'sharedWithMe = true'. DO NOT use spreadsheet IDs as search terms. Leave empty to get all spreadsheets.
Sort order (comma-separated list for multi-field sorting). Valid fields: createdTime, folder, modifiedByMeTime, modifiedTime, name, name_natural, quotaBytesUsed, recency, sharedWithMeTime, starred, viewedByMeTime. Append ' desc' for descending order (default is ascending). Examples: 'modifiedTime desc', 'folder,name', 'starred,modifiedTime desc'.
Token for retrieving the next page of results. Use the 'next_page_token' value from a previous response to get subsequent pages. Leave empty to get the first page.
Maximum number of spreadsheets to return (1-1000). Defaults to 10.
How to search: 'name' searches filenames only (prefix matching from the START of filenames), 'content' uses fullText search which searches file content, name, description, and metadata (Google Drive API limitation: cannot search content exclusively without also matching filenames), 'both' explicitly searches both name OR content with an OR condition. Note: 'name' search only matches from the START of filenames (e.g., 'Budget' finds 'Budget 2024' but NOT 'Q1 Budget').
Whether to return only starred spreadsheets. Defaults to False.
Return spreadsheets created after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
Return spreadsheets modified after this date. Use RFC 3339 format like '2024-01-01T00:00:00Z'.
Whether to return only spreadsheets shared with the current user. Defaults to False.
Whether to include spreadsheets in trash. Defaults to False.
Whether to include spreadsheets from shared drives you have access to. Defaults to True.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SET_BASIC_FILTERTool to set a basic filter on a sheet in a Google Spreadsheet. Use when you need to filter or sort data within a specific range on a sheet.
Input parameters
The filter to set.
The ID of the spreadsheet.
Limits the ranges included in the response spreadsheet. Meaningful only if includeSpreadsheetInResponse is true.
True if grid data should be returned. Meaningful only if includeSpreadsheetInResponse is true. Ignored if a field mask was set in the request.
Determines if the updated spreadsheet resource appears in the response. Default is false.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SET_DATA_VALIDATION_RULETool to set or clear data validation rules (including dropdowns) on a range in Google Sheets. Use when you need to apply dropdown lists, range-based dropdowns, or custom formula validation to cells.
Input parameters
Operation mode: 'SET' applies a validation rule to the range, 'CLEAR' removes any existing validation from the range.
Whether to reject invalid data (true) or show a warning (false). Default is true.
List of allowed values for dropdown. Required when validation_type='ONE_OF_LIST'. Each item becomes a dropdown option.
Custom formula for validation. Required when validation_type='CUSTOM_FORMULA'. Formula should evaluate to TRUE/FALSE. Example: '=A1>10'.
The unique sheet ID (numeric identifier) where the validation rule will be applied. The first sheet created in a spreadsheet typically has ID 0, while additional sheets get unique IDs (e.g., 1534097477). If a sheet is deleted, its ID is never reused - so if the original first sheet (ID 0) was deleted, attempting to use 0 will fail. Always verify the actual sheet ID exists using GOOGLESHEETS_GET_SPREADSHEET_INFO action (check 'sheets\[\].properties.sheetId' field).
Ending row index (0-based, exclusive) for the validation range. To apply to row 1 only, use start_row_index=0 and end_row_index=1.
Optional message shown to the user when they select the cell. Helpful hint about what values are expected.
Whether to show a dropdown UI for list-based validation. Default is true. Set to true for dropdown lists.
The unique identifier of the Google Sheets spreadsheet. Can be found in the spreadsheet URL between '/d/' and '/edit'.
Source range in A1 notation for dropdown values. Required when validation_type='ONE_OF_RANGE'. Example: 'Sheet1!A1:A10' or 'A1:A10'.
Starting row index (0-based, inclusive) for the validation range. Row 1 is index 0.
Type of validation rule to apply. Required when mode='SET'. Dropdown types: 'ONE_OF_LIST' (dropdown from list), 'ONE_OF_RANGE' (dropdown from range). Number validations: 'NUMBER_GREATER', 'NUMBER_GREATER_THAN_EQ', 'NUMBER_LESS', 'NUMBER_LESS_THAN_EQ', 'NUMBER_EQ', 'NUMBER_NOT_EQ', 'NUMBER_BETWEEN', 'NUMBER_NOT_BETWEEN'. Text validations: 'TEXT_CONTAINS', 'TEXT_NOT_CONTAINS', 'TEXT_EQ', 'TEXT_NOT_EQ', 'TEXT_IS_EMAIL', 'TEXT_IS_URL' (Note: TEXT_STARTS_WITH and TEXT_ENDS_WITH are only for conditional formatting, not data validation). Date validations: 'DATE_EQ', 'DATE_BEFORE', 'DATE_AFTER', 'DATE_ON_OR_BEFORE', 'DATE_ON_OR_AFTER', 'DATE_BETWEEN', 'DATE_NOT_BETWEEN', 'DATE_NOT_EQ', 'DATE_IS_VALID'. Other: 'BLANK', 'NOT_BLANK', 'BOOLEAN', 'CUSTOM_FORMULA'.
Generic list of condition values for validation types that require specific values (e.g., NUMBER_GREATER requires one value, NUMBER_BETWEEN requires two values, TEXT_CONTAINS requires one value). For simple validations like TEXT_IS_EMAIL, BLANK, NOT_BLANK, BOOLEAN, DATE_IS_VALID, this can be omitted. Each value should be a string that will be parsed by Google Sheets.
Ending column index (0-based, exclusive) for the validation range. To apply to column A only, use start_column_index=0 and end_column_index=1.
Starting column index (0-based, inclusive) for the validation range. Column A is index 0.
Whether to apply validation to rows hidden by filters. Default is false. Set to true to ensure validation applies to both visible and filtered rows.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SHEET_FROM_JSONDEPRECATED: Use GOOGLESHEETS_CREATE_GOOGLE_SHEET1 + GOOGLESHEETS_UPDATE_VALUES_BATCH (or GOOGLESHEETS_VALUES_UPDATE / GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND) instead. Creates a new Google Spreadsheet and populates its first worksheet from `sheet_json`. When data is provided, the first item's keys establish the headers. An empty list creates an empty worksheet.
Input parameters
The desired title for the new Google Spreadsheet.
A list of dictionaries representing the rows of the sheet. Each dictionary must have the same set of keys, which will form the header row. Values can be strings, numbers, booleans, or null (represented as empty cells). An empty list \[\] is allowed and will create a spreadsheet with an empty worksheet.
The name for the first worksheet within the newly created spreadsheet. This name will appear as a tab at the bottom of the sheet.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SPREADSHEETS_SHEETS_COPY_TOTool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet.
Input parameters
The ID of the sheet to copy.
The ID of the spreadsheet containing the sheet to copy.
The ID of the spreadsheet to copy the sheet to.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SPREADSHEETS_VALUES_APPENDTool to append values to a spreadsheet. Use when you need to add new data to the end of an existing table in a Google Sheet.
Input parameters
A1 notation range used to locate a logical table. New rows are appended after the last row of that table within this range. Valid formats: sheet name only (e.g., 'Sheet1'), column range (e.g., 'Sheet1!A:D'), or cell range (e.g., 'Sheet1!A1:D100'). Sheet names with spaces need single quotes (auto-added). The sheet name must exist in the spreadsheet; a non-existent sheet will cause an 'Unable to parse range' error. IMPORTANT: The append may land in different columns than specified due to API table detection. For strict column placement, use GOOGLESHEETS_SPREADSHEETS_VALUES_UPDATE instead. Always check updates.updatedRange in the response to verify where data was actually written.
2D array of values to append. Typically, each inner list is a ROW (majorDimension=ROWS). Use null/None for empty cells.
The spreadsheet ID (typically 44 characters containing letters, numbers, hyphens, and underscores). Found in the URL between /d/ and /edit. NOT the sheet name (tab name) - that belongs in the 'range' parameter.
How to interpret the 2D values array. Use ROWS for row-wise data (most common for appends). Use COLUMNS for column-wise data. Example: if A1=1,B1=2,A2=3,B2=4 then majorDimension=ROWS yields \[\[1,2\],\[3,4\]\] and majorDimension=COLUMNS yields \[\[1,3\],\[2,4\]\].
How the input data should be inserted.
How the input data should be interpreted.
Determines if the update response should include the values of the cells that were appended. By default, responses do not include the updated values.
Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
Determines how dates, times, and durations in the response should be rendered. This is ignored if responseValueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEARTool to clear one or more ranges of values from a spreadsheet. Use when you need to remove data from specific cells or ranges while keeping formatting and other properties intact.
Input parameters
The ranges to clear, in A1 notation (e.g., 'Sheet1!A1:B2') or R1C1 notation. Each range should be a clean string without surrounding brackets or extra quotes. Valid examples: 'Sheet1!A1:B2', 'A1:Z100', 'Sheet1'. Invalid examples: "\['Sheet1!A1:B2'\]", '\[Sheet1!A1\]'.
The ID of the spreadsheet to update. Can be either a spreadsheet ID or a full Google Sheets URL (the ID will be extracted automatically).
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_GET_BY_DATA_FILTERTool to return one or more ranges of values from a spreadsheet that match the specified data filters. Use when you need to retrieve specific data sets based on filtering criteria rather than entire sheets or fixed ranges.
Input parameters
Required. An array of data filter objects used to match ranges of values to retrieve. Each filter can specify either 'a1Range' (e.g., 'Sheet1!A1:B5') or 'gridRange'. Must be provided as a list, e.g., \[{'a1Range': 'Sheet1!A1:B5'}\]. A single filter object will be automatically wrapped in a list.
The ID of the spreadsheet to retrieve data from. This is the unique identifier found in the spreadsheet URL (e.g., in 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit', the ID is the SPREADSHEET_ID part). Typical Google Sheets IDs are approximately 44 characters long and contain alphanumeric characters, hyphens, and underscores.
The major dimension that results should use. For example, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4, then a request that selects that range and sets majorDimension=ROWS returns \[\[1,2\],\[3,4\]\], whereas a request that sets majorDimension=COLUMNS returns \[\[1,3\],\[2,4\]\].
How values should be represented in the output. The default render option is FORMATTED_VALUE.
How dates, times, and durations should be represented in the output. This is ignored if valueRenderOption is FORMATTED_VALUE. The default dateTime render option is SERIAL_NUMBER.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_UPDATE_DIMENSION_PROPERTIESTool to hide/unhide rows or columns and set row heights or column widths. Use when you need to change visibility or pixel sizing of dimensions in a Google Sheet.
Input parameters
The numeric ID of the sheet (tab). Either sheet_id or sheet_name must be provided. If both are provided, sheet_name will be resolved to sheet_id and override this value.
Whether to update rows or columns.
The zero-based end index (exclusive) of the dimension range to update. For example, to update rows 5-9, use start_index=5 and end_index=10.
The height (for rows) or width (for columns) in pixels. Must be a positive integer. At least one of hidden_by_user or pixel_size must be provided.
The name of the sheet (tab). If provided, this will be resolved to the numeric sheet_id using GOOGLESHEETS_GET_SPREADSHEET_INFO. Either sheet_id or sheet_name must be provided.
The zero-based start index (inclusive) of the dimension range to update. For rows, 0 is the first row; for columns, 0 is column A.
Whether to hide (true) or unhide (false) the specified rows/columns. At least one of hidden_by_user or pixel_size must be provided.
The ID of the spreadsheet to update.
Limits the ranges included in the response spreadsheet (only if includeSpreadsheetInResponse is true).
Whether to include grid data in the response (only if includeSpreadsheetInResponse is true).
Whether to include the updated spreadsheet in the response.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_UPDATE_SHEET_PROPERTIESTool to update properties of a sheet (worksheet) within a Google Spreadsheet, such as its title, index, visibility, tab color, or grid properties. Use this when you need to modify the metadata or appearance of a specific sheet.
Input parameters
The ID of the spreadsheet containing the sheet to update.
Limits the ranges included in the response spreadsheet. Meaningful only if includeSpreadsheetInResponse is true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B2').
The details of the sheet properties to update.
True if grid data should be returned. Meaningful only if includeSpreadsheetInResponse is true. When true, the response will include cell data for the specified ranges.
Determines if the update response should include the spreadsheet resource. When true, the response will include the full updated spreadsheet.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_UPDATE_SPREADSHEET_PROPERTIESTool to update SPREADSHEET-LEVEL properties such as the spreadsheet's title, locale, time zone, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Spreadsheet. NOTE: To update individual SHEET properties (like renaming a specific sheet/tab), use GOOGLESHEETS_UPDATE_SHEET_PROPERTIES instead.
Input parameters
Field mask specifying which properties to update (comma-separated for multiple fields). Supports nested paths using dot notation (e.g., 'iterativeCalculationSettings.maxIterations') per Protocol Buffers FieldMask specification. The root 'properties' is implied and must not be included. Special case: When updating 'spreadsheetTheme', use the field mask 'spreadsheetTheme' (not nested paths like 'spreadsheetTheme.primaryFontFamily') and provide the complete theme object with all required fields. Wildcard '*' updates all properties.
The spreadsheet-level properties to update (e.g., title, locale, timeZone, autoRecalc). At least one field within properties must be set. NOTE: To update individual sheet/tab properties (like renaming a specific sheet), use GOOGLESHEETS_UPDATE_SHEET_PROPERTIES instead.
The ID of the spreadsheet to update.
Limits the ranges included in the response spreadsheet. Only meaningful if includeSpreadsheetInResponse is true. Ranges should be in A1 notation (e.g., 'Sheet1!A1:B2').
Determines if grid data (cell values) should be included in the response. Only meaningful if includeSpreadsheetInResponse is true. When true, the response will include cell data for the specified ranges or entire spreadsheet.
Determines if the update response should include the full spreadsheet resource. When true, the response will include the entire updated spreadsheet with all sheets, properties, and metadata.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_UPDATE_VALUES_BATCHTool to set values in one or more ranges of a spreadsheet. Use when you need to update multiple ranges in a single operation for better performance.
Input parameters
The new values to apply to the spreadsheet. Each ValueRange specifies a range and the values to write to that range. Multiple ranges can be updated in a single request.
The ID of the spreadsheet to update. This ID can be found in the URL of the spreadsheet (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Must be a valid Google Sheets spreadsheet ID.
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing. USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with '=' become formulas, etc.). INPUT_VALUE_OPTION_UNSPECIFIED: Default input value option is not specified.
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
Determines how values in the response should be rendered. Only used if includeValuesInResponse is true. FORMATTED_VALUE (default): Values are formatted as displayed in the UI. UNFORMATTED_VALUE: Values are unformatted. FORMULA: Formulas are not evaluated.
Determines how dates, times, and durations in the response should be rendered. Only used if includeValuesInResponse is true. SERIAL_NUMBER (default): Dates are returned as numbers. FORMATTED_STRING: Dates are returned as formatted strings.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_UPSERT_ROWSUpsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Auto-adds missing columns to sheet - Partial column updates (only update Phone + Status, preserve other columns) - Column order doesn't matter (auto-maps by header name) - Prevents duplicates by matching key column Example inputs: - Contact update: keyColumn='Email', headers=\['Email','Phone','Status'\], data=\[\['john@ex.com','555-0101','Active'\]\] - Inventory sync: keyColumn='SKU', headers=\['SKU','Stock','Price'\], data=\[\['WIDGET-001',50,9.99\],\['GADGET-002',30,19.99\]\] - CRM lead update: keyColumn='Lead ID', headers=\['Lead ID','Score','Status'\], data=\[\['L-12345',85,'Hot'\]\] - Partial update: keyColumn='Email', headers=\['Email','Phone'\] (only updates Phone, preserves Name/Address/etc)
Input parameters
2D array of data rows to upsert. IMPORTANT: If 'headers' is NOT provided, the FIRST row is treated as column headers and remaining rows as data - so you need at least 2 rows (1 header + 1 data). If 'headers' IS provided separately, then ALL rows in this array are treated as data rows. Each row should have the same number of values as headers. If a row has MORE values than headers: with strict_mode=true (default), an error is returned showing which rows are affected; with strict_mode=false, extra values are silently truncated. If a row has FEWER values than headers, an error is returned during execution. Cell values can be strings, numbers, booleans, or null. Example with headers provided: headers=\['Email','Status'\], rows=\[\['john@ex.com','Active'\]\] (1 data row). Example without headers: rows=\[\['Email','Status'\],\['john@ex.com','Active'\]\] (row 1 = headers, row 2 = data).
List of column names for the data. These will be matched against sheet headers. If a column doesn't exist in the sheet, it will be added automatically. Order doesn't need to match sheet order. Can be auto-derived from the first row in 'rows' if not provided. Example inputs: \['Email', 'Phone', 'Status'\] for contact updates, \['Lead ID', 'Name', 'Score'\] for CRM, \['SKU', 'Stock', 'Price'\] for inventory.
The column NAME (header text) to use as unique identifier for matching rows. Must be an actual header name from the sheet (e.g., 'Email', 'Lead ID', 'SKU'), NOT a column letter (e.g., 'A', 'B', 'C'). If you provide a column letter like 'A', it will be automatically converted to the header name at that column position. If neither 'key_column' nor 'key_column_index' is provided, defaults to the first column (index 0).
The name of the sheet/tab within the spreadsheet. Note: Google Sheets creates default sheets with localized names based on account language (e.g., 'Sheet1' for English, '工作表1' for Chinese, 'Hoja1' for Spanish, 'Feuille1' for French, 'Planilha1' for Portuguese, 'Лист1' for Russian). If you specify a common default name and the sheet is not found, the action will automatically use the first sheet if only one exists.
Controls how rows with mismatched column counts are handled. When True (default), an error is returned if any row has more values than headers - the error message shows exactly which rows are affected and what values would need to be removed. When False, extra values are silently truncated to match the header count. Set to False only if you explicitly want automatic truncation of extra values.
Cell where the table starts (where headers are located). Defaults to 'A1'. Use this if your table is offset (e.g., 'C5', 'D10').
The ID of the spreadsheet. Must be a non-empty string, typically a 44-character alphanumeric string found in the spreadsheet URL.
The 0-based column index to use as unique identifier for matching rows. Alternative to 'key_column' - will be converted to column name using headers. If neither 'key_column' nor 'key_column_index' is provided, defaults to 0 (first column). Example: 0 for first column, 1 for second column.
Internal field to track input normalization (e.g., row truncation). Not part of API.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_VALUES_GETReturns a range of values from a spreadsheet. Use when you need to read data from specific cells or ranges in a Google Sheet.
Input parameters
The A1 notation or R1C1 notation of the range to retrieve values from. If the sheet name contains spaces or special characters, wrap the sheet name in single quotes (e.g., "'My Sheet'!A1:B2"). Without single quotes, the API will return a 400 error for sheet names with spaces. Examples: 'Sheet1!A1:B3', "'Sheet With Spaces'!A1:D5", 'A1:D5' (no sheet name uses first visible sheet), 'Sheet1!A:A' (entire column), 'SheetName' (entire sheet).
1-based row number to stop reading at (inclusive). Use with start_row for pagination to avoid large response errors. Example: start_row=501, end_row=1000 fetches rows 501-1000.
1-based row number to start reading from (inclusive). Use with end_row for pagination to avoid large response errors. Example: start_row=1, end_row=500 fetches the first 500 rows.
The unique identifier of the Google Spreadsheet from which to retrieve values. This is the long alphanumeric string found in the spreadsheet URL between '/d/' and '/edit' (e.g., '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'). WARNING: Do NOT use the spreadsheet name or title (e.g., 'My Sales Report'); you must use the actual ID from the URL.
The major dimension for results.
How values should be rendered in the output. FORMATTED_VALUE: Values are calculated and formatted (default). UNFORMATTED_VALUE: Values are calculated but not formatted. FORMULA: Values are not calculated; the formula is returned instead.
How dates, times, and durations should be represented in the output. SERIAL_NUMBER: Dates are returned as serial numbers (default). FORMATTED_STRING: Dates returned as formatted strings.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
GOOGLESHEETS_VALUES_UPDATETool to set values in a range of a Google Spreadsheet. Use when you need to update or overwrite existing cell values in a specific range.
Input parameters
The A1 notation of the range to update values in (e.g., 'Sheet1!A1:C2', 'MySheet!C:C', or 'A1:D5'). Must be actual cell references, not placeholder values. If the sheet name is omitted (e.g., 'A1:B2'), the operation applies to the first visible sheet. IMPORTANT: The range must not exceed the sheet's grid dimensions. By default, new sheets have 1000 rows and 26 columns (A-Z). If you need to write to columns beyond Z (e.g., AA, AB), first expand the sheet using GOOGLESHEETS_APPEND_DIMENSION or check the current dimensions using GOOGLESHEETS_GET_SPREADSHEET_INFO.
The data to write. This is an array of arrays, the outer array representing all the data and each inner array representing a major dimension. Each item in the inner array corresponds with one cell.
The unique identifier of the Google Spreadsheet to update. This ID can be found in the URL of the spreadsheet (e.g., https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit). Must be a non-empty string.
The major dimension of the values. ROWS (default) means each inner array is a row of values. COLUMNS means each inner array is a column of values. Defaults to ROWS if unspecified.
If True (default), automatically expands the sheet's dimensions (adds columns/rows) when the target range exceeds the current grid limits. If False, the operation will fail with an error if the range exceeds grid limits.
How the input data should be interpreted. RAW: Values are stored exactly as entered, without parsing (dates, formulas, etc. remain as strings). USER_ENTERED: Values are parsed as if typed by a user (numbers stay numbers, strings prefixed with '=' become formulas, etc.).
Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values.
Determines how values in the response should be rendered. Only used if includeValuesInResponse is true. FORMATTED_VALUE (default): Values are formatted as displayed in the UI. UNFORMATTED_VALUE: Values are unformatted (numbers, booleans, formulas). FORMULA: Formulas are not evaluated and remain as text.
Determines how dates, times, and durations in the response should be rendered. Only used if includeValuesInResponse is true. SERIAL_NUMBER (default): Dates are returned as numbers. FORMATTED_STRING: Dates are returned as strings formatted per the cell's locale.
Output
Data from the action execution
Error if any occurred during the execution of the action
Whether or not the action execution was successful or not
No publicly available marketplace agent is found using this tool yet. There are 77 agents privately built on Nagent that already use Google Sheets.
Build on Nagent
Connect Google Sheets to any Nagent agent in minutes — no API key management, no boilerplate. Just configure and deploy.
The five questions agent builders ask before adopting a new integration.
Open the External Integrations panel inside Nagent (app.nagent.ai/externalIntegration), find Google Sheets, and click "Connect Now." You'll authenticate with OAuth — Nagent handles credential storage and refresh automatically. Once connected, Google Sheets is available to any agent in your workspace.
No. Nagent provides no-code integration for every tool. Once Google Sheets is connected, you configure its 48 actions and 16 triggers directly in the agent builder UI — no API calls, no boilerplate, no schema management.
Helix — Nagent's agentic agent builder — lets you drop Google Sheets steps into any workflow visually. Pick an action (e.g., one of those listed above), fill in the inputs (Helix knows the required vs. optional schema for each parameter), and connect it to upstream/downstream steps. Triggers run as the entry point of an agent, so when a Google Sheets event fires, the agent kicks off automatically.
Every Google Sheets action and trigger ships with a fully-typed schema — input parameters with name, type, required flag, and description, plus the output payload shape. The schemas are documented in the sections above. Helix uses these schemas to validate your configuration at build time and to type-check the data flowing between steps.
Yes. While Google Sheets ships with 48 pre-built spreadsheets actions, you can layer custom logic around them inside Helix — pre/post-processing steps, conditional branches, retries, or stitching Google Sheets together with other connected tools. For deeper customization, talk to our team about Nagent's Agentic AI Lab — forward-deployed engineers who build Google Sheets-based workflows tailored to your business.