---
asIndexPage: true
---
# Google Sheets
import ToolInfo from "@/app/_components/tool-info";
import Badges from "@/app/_components/badges";
import TabbedCodeBlock from "@/app/_components/tabbed-code-block";
import TableOfContents from "@/app/_components/table-of-contents";
import ToolFooter from "@/app/_components/tool-footer";
import ScopePicker from "@/app/_components/scope-picker";
import { Callout } from "nextra/components";
The Arcade GoogleSheets MCP Server provides a pre-built set of tools for working with Google Sheets. These tools make it easy to build agents and AI apps that can:
- Create new spreadsheets and seed initial data.
- Search Google Drive for spreadsheets and retrieve metadata (titles, IDs, URLs; excludes trash).
- Read specific ranges from sheets.
- Write to single cells or update ranges with flexible data formats.
- Add notes to cells.
- Get detailed spreadsheet and sheet metadata (names, IDs, positions, row/column counts; metadata only).
## Available Tools
If you need to perform an action that's not listed here, you can [get in touch
with us](mailto:contact@arcade.dev) to request a new tool, or [create your own
tools](/guides/create-tools/tool-basics/build-mcp-server).
Each tool requires specific Google OAuth scopes to function. You'll find the required scopes listed in a blue info box at the end of each tool's documentation below. For more information about configuring OAuth and tips for moving to production, see the [Google auth provider documentation](/references/auth-providers/google.
The `drive.file` scope only grants access to files that were created or opened
by your application. If you need broader access to a user's Google Drive
spreadsheets (e.g., to access spreadsheets created by other applications),
you'll need to create your own Google OAuth provider and request the
`drive.readonly` or `drive` scope. Note that these broader scopes are **not
supported** by Arcade's default Google OAuth provider.
## Find required scopes
Select the tools you plan to use to see the OAuth scopes your application needs:
---
## GoogleSheets.CreateSpreadsheet
Create a new spreadsheet with the provided title and data in its first sheet
**Parameters**
- **title** (`string`, optional) The title of the new spreadsheet
- **data** (`string`, optional) The data to write to the spreadsheet. A JSON string (property names enclosed in double quotes) representing a dictionary that maps row numbers to dictionaries that map column letters to cell values. For example, data[23]['C'] would be the value of the cell in row 23, column C. Type hint: dict[int, dict[str, Union[int, float, str, bool]]]
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.WriteToCell
Write a value to a single cell in a spreadsheet.
**Parameters**
- **spreadsheet_id** (`string`, required) The id of the spreadsheet to write to
- **column** (`string`, required) The column string to write to. For example, 'A', 'F', or 'AZ'
- **row** (`integer`, required) The row number to write to
- **value** (`string`, required) The value to write to the cell
- **sheet_name** (`string`, optional) The name of the sheet to write to. Defaults to 'Sheet1'
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.UpdateCells
Write values to a Google Sheet using a flexible data format.
**Parameters**
- **spreadsheet_id** (`string`, required) The id of the spreadsheet to write to
- **data** (`string`, required) The data to write. A JSON string (property names enclosed in double quotes) representing a dictionary that maps row numbers to dictionaries that map column letters to cell values. For example, data[23]['C'] is the value for cell C23. This is the same format accepted by create_spreadsheet. Type hint: dict[int, dict[str, int | float | str | bool]]
- **sheet_position** (`integer`, optional) The position/tab of the sheet in the spreadsheet to write to. A value of 1 represents the first (leftmost/Sheet1) sheet. Defaults to 1.
- **sheet_id_or_name** (`string`, optional) The id or name of the sheet to write to. If provided, takes precedence over sheet_position.
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.AddNoteToCell
Add a note to a specific cell in a spreadsheet. A note is a small
**Parameters**
- **spreadsheet_id** (`string`, required) The id of the spreadsheet to add a comment to
- **column** (`string`, required) The column string to add a note to. For example, 'A', 'F', or 'AZ'
- **row** (`integer`, required) The row number to add a note to
- **note_text** (`string`, required) The text for the note to add
- **sheet_position** (`integer`, optional) The position/tab of the sheet in the spreadsheet to write to. A value of 1 represents the first (leftmost/Sheet1) sheet. Defaults to 1.
- **sheet_id_or_name** (`string`, optional) The id or name of the sheet to write to. If provided, takes precedence over sheet_position.
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.SearchSpreadsheets
Searches for spreadsheets in the user's Google Drive based on the titles and content and
**Parameters**
- **spreadsheet_contains** (`array[string]`, optional) Keywords or phrases that must be in the spreadsheet title. Provide a list of keywords or phrases if needed.
- **spreadsheet_not_contains** (`array[string]`, optional) Keywords or phrases that must NOT be in the spreadsheet title. Provide a list of keywords or phrases if needed.
- **search_only_in_shared_drive_id** (`string`, optional) The ID of the shared drive to restrict the search to. If provided, the search will only return spreadsheets from this drive. Defaults to None, which searches across all drives.
- **include_shared_drives** (`boolean`, optional) Whether to include spreadsheets from shared drives. Defaults to False (searches only in the user's 'My Drive').
- **include_organization_domain_spreadsheets** (`boolean`, optional) Whether to include spreadsheets from the organization's domain. This is applicable to admin users who have permissions to view organization-wide spreadsheets in a Google Workspace account. Defaults to False.
- **order_by** (`Enum` [OrderBy](/resources/integrations/productivity/google-sheets/reference#orderby), optional) Sort order. Defaults to listing the most recently modified spreadsheets first
- **limit** (`integer`, optional) The maximum number of spreadsheets to list. Defaults to 10. Max is 50
- **pagination_token** (`string`, optional) The pagination token to continue a previous request
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.WhoAmI
Get comprehensive user profile and Google Sheets environment information.
**Parameters**
This tool does not take any parameters.
- `https://www.googleapis.com/auth/drive.file`
- `https://www.googleapis.com/auth/userinfo.profile`
- `https://www.googleapis.com/auth/userinfo.email`
---
## GoogleSheets.GenerateGoogleFilePickerUrl
Generate a Google File Picker URL for user-driven file selection and authorization.
**Parameters**
This tool does not take any parameters.
No additional scopes required (uses basic Google authentication).
---
## GoogleSheets.GetSpreadsheet
Gets the specified range of cells from a single sheet in the spreadsheet.
**Parameters**
- **spreadsheet_id** (`string`, required) The id of the spreadsheet to get
- **sheet_position** (`integer`, optional) The position/tab of the sheet in the spreadsheet to get. A value of 1 represents the first (leftmost/Sheet1) sheet . Defaults to 1.
- **sheet_id_or_name** (`string`, optional) The id or name of the sheet to get. Defaults to None, which means sheet_position will be used instead.
- **start_row** (`integer`, optional) Starting row number (1-indexed, defaults to 1)
- **start_col** (`string`, optional) Starting column letter(s) or 1-based column number (defaults to 'A')
- **max_rows** (`integer`, optional) Maximum number of rows to fetch for each sheet in the spreadsheet. Must be between 1 and 1000. Defaults to 1000.
- **max_cols** (`integer`, optional) Maximum number of columns to fetch for each sheet in the spreadsheet. Must be between 1 and 100. Defaults to 100.
`https://www.googleapis.com/auth/drive.file`
---
## GoogleSheets.GetSpreadsheetMetadata
Gets the metadata for a spreadsheet including the metadata for the sheets in the spreadsheet.
**Parameters**
- **spreadsheet_id** (`string`, required) The id of the spreadsheet to get metadata for
`https://www.googleapis.com/auth/drive.file`
---
## Auth
The Arcade GoogleSheets MCP Sever uses the [Google auth provider](/references/auth-providers/google to connect to users' GoogleSheets accounts. Please refer to the [Google auth provider](/references/auth-providers/google documentation to learn how to configure auth.