Google Sheets
Authentication: OAuth. See Magic Link for the runtime auth flow, or Application credentials to bring your own OAuth app.
Sample use cases
- Append today’s Stripe payouts to the
Finance / Dailysheet, deduped by transaction ID. - Pull the values from the
Q2 Forecastsheet and post the rollup in #finance. - Find rows in the
Leadssheet where the email domain matches our top 10 target accounts.
Available Tools
Add a new sheet (tab) to an existing spreadsheet with customizable properties.
Permanently delete a sheet (tab) from a spreadsheet. Cannot be undone.
Update sheet properties like title, position, visibility, or tab color.
Copy a sheet within the same spreadsheet or to a different spreadsheet.
Sorts data in rows based on a sort order per column. Supports multi-column sorting and color-based sorting.
Sets data validation rules to cells in a range. Supports number, text, date validation, dropdown lists, and custom rules. Use empty rule to clear validation.
Sets a basic filter on a sheet with optional sorting and column-specific filter criteria. Supports text, number, and date filtering.
Add a chart (bar, line, area, column, scatter, combo, stepped area) to a spreadsheet. Requires A1 ranges for domain (x-axis) and series (y-axis) data.
Create a new spreadsheet with specified title and optional properties.
Retrieve spreadsheet information including metadata, sheets, and optionally cell data.
Update spreadsheet properties such as title, locale, or timezone.
Read cell values from a specified range using A1 notation (e.g., ‘Sheet1!A1:B10’).
Write cell values to a specified range. Supports formulas and raw values.
Append rows to the end of a table, automatically finding the last row with data.
Clear cell values from a range while preserving formatting and structure.
Read cell values from multiple ranges in a single efficient API call.
Update multiple ranges with values in a single efficient API call.
Clear values from multiple ranges in a single API call while preserving formatting.
Apply alternating row or column colors (zebra striping) to a range. range accepts A1 notation (e.g. ‘Sheet1!A1:E20’) or a GridRange object.
Add a conditional formatting rule to one or more ranges. Provide either booleanRule (condition + format) or gradientRule (minpoint/midpoint/maxpoint),…
Create a collapsible row or column group for hierarchical reports. range.dimension is ROWS or COLUMNS; range.
Create a named filter view with persistent filter/sort criteria. Unlike set_basic_filter, multiple filter views coexist without overwriting each other…
Create a named range so the cells can be referenced by name in formulas (e.g. =SUM(SalesData)). Names should be valid identifiers.
Lock a range from edits. warning_only=True shows a warning but still allows edits; False blocks them.
Extend a pattern (formula, date sequence, number series) by auto-fill instead of writing each value.
Auto-fit row heights or column widths to content. dimensions.dimension is ROWS or COLUMNS; start_index/end_index are zero-based, end-exclusive.
Delete a banding rule by ID. Use get_spreadsheet to find banded_range_id values on each sheet. This is irreversible.
Delete a conditional format rule at the given 0-based index on a sheet. To inspect existing rules use get_spreadsheet with include_grid_data=True.
Delete rows or columns from a sheet. range.dimension is ROWS or COLUMNS; range.start_index/end_index are zero-based, end-exclusive.
Remove duplicate rows from a range, comparing only the columns listed in comparison_columns (DimensionRange list). The first occurrence is kept.
Delete an embedded chart or image by its id. The object_id is the chart_id returned by add_chart, or read from get_spreadsheet (sheets[].charts[].
Delete a named filter view by ID. Use get_spreadsheet to find filter_view_id values on each sheet. This is irreversible.
Delete a named range by ID. Use get_spreadsheet to find named_range_id values. Formulas referencing the deleted name will break. This is irreversible.
Duplicate a sheet within the same spreadsheet using DuplicateSheetRequest. Unlike copy_sheet (which uses :copyTo and auto-names the result), this lets…
Bulk find and replace text. Provide exactly one scope: a range (GridRange), a sheet_id, or all_sheets=True.
Apply cell-level formatting (number format, colors, fonts, alignment, wrap, borders, padding) to a range using RepeatCellRequest.
Insert empty rows or columns into a sheet. range.dimension selects ROWS or COLUMNS; range.start_index/end_index are zero-based, end-exclusive.
Merge cells across a range. Discards content from all cells except the top-left of each merged block; not reversible via unmerge_cells.
Reorder rows or columns. source.dimension is ROWS or COLUMNS; source.start_index/end_index are zero-based, end-exclusive.
Strip leading and trailing whitespace from string cells in a range. Returns the count of cells changed. Common cleanup after data import.
Unmerge previously merged cells in a range. Useful for decomposing merged template cells before editing.
Update an existing banding rule’s range or colors. Provide banded_range_id (from add_banding or get_spreadsheet) and the fields to change.
Set borders around a cell range. Each side (top/bottom/left/right) takes a Border with style and optional colorStyle.
Update an existing chart’s spec — change chart type, title, or data ranges. Provide chart_id (from add_chart) and the spec fields to change.
Replace a conditional format rule at a given index, or move it to a new position. sheet_id targets the sheet; index is the rule’s current 0-based posi…
Set column widths or row heights, or hide/show dimensions. range.dimension is ROWS or COLUMNS; range.
Reposition an embedded object (chart or image) by id. Use new_sheet_id to move to another sheet, or overlay fields to set anchor cell, pixel offsets,…
Update an existing named filter view. Provide filter_view_id (from add_filter_view or get_spreadsheet) plus the fields to change.
Update an existing named range’s name or cell range. Provide the named_range_id (from add_named_range or get_spreadsheet); pass name and/or range to c…
Add a table to a sheet over a GridRange (include the header row). Optionally set per-column names and types