Install
openclaw skills install google-sheets-spreadsheetsGoogle Sheets API integration with managed OAuth. Create spreadsheets, read and write cell values, manage sheets, append rows, create charts, and automate data operations. Use this skill when users want spreadsheet work done in Google Sheets.
openclaw skills install google-sheets-spreadsheetsAccess Google Sheets via the Google Sheets API with managed OAuth authentication. Create spreadsheets, read and write cell values, manage sheets, append rows, create charts, and automate data operations.
This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Google Sheets API access yourself.
| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Sheets |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Sheets |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Google Sheets │
│ (User Chat) │ │ (OAuth) │ │ (Sheets API) │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect Sheets │ │
│ │ 4. Secure Token │
│ │ 5. Proxy Requests │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ Google │
│ File │ │ Auth │ │ Sheets │
└──────────┘ └──────────┘ └──────────┘
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Google Sheets again."
# Search for spreadsheets
clawlink_call_tool --tool "googlesheets_search_spreadsheets" --params '{"query": "budget"}'
# Get spreadsheet info
clawlink_call_tool --tool "googlesheets_get_spreadsheet_info" --params '{"spreadsheet_id": "YOUR_SPREADSHEET_ID"}'
# Get sheet names
clawlink_call_tool --tool "googlesheets_get_sheet_names" --params '{"spreadsheet_id": "YOUR_SPREADSHEET_ID"}'
All Google Sheets tool calls are authenticated automatically by ClawLink using the user's connected Google account.
No API key is required in chat. ClawLink stores the OAuth token securely and injects it into every Google Sheets API request on the user's behalf.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.clawlink_list_integrations
Response: Returns all connected integrations. Look for google-sheets in the list.
clawlink_list_tools --integration google-sheets
Response: Returns the live tool catalog for Google Sheets.
If Google Sheets tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration google-sheets| Tool | Description | Mode |
|---|---|---|
googlesheets_search_spreadsheets | Search for spreadsheets by name, content, or date | Read |
googlesheets_get_spreadsheet_info | Get spreadsheet metadata (ID, title, sheet properties) | Read |
googlesheets_get_sheet_names | List all worksheet names in a spreadsheet | Read |
googlesheets_get_spreadsheet_by_data_filter | Get spreadsheet filtered by data filters | Read |
| Tool | Description | Mode |
|---|---|---|
googlesheets_values_get | Read values from a specific cell range | Read |
googlesheets_batch_get | Retrieve data from multiple ranges in one call | Read |
googlesheets_lookup_spreadsheet_row | Find a row by exact cell content match | Read |
googlesheets_aggregate_column_data | Search rows by column value and perform math operations | Read |
googlesheets_spreadsheets_values_batch_get_by_data_filter | Read ranges matching data filters | Read |
| Tool | Description | Mode |
|---|---|---|
googlesheets_values_update | Set values in a cell range | Write |
googlesheets_update_values_batch | Update multiple ranges in one call | Write |
googlesheets_spreadsheets_values_append | Append new rows to a table | Write |
googlesheets_batch_update_values_by_data_filter | Update values matching data filters | Write |
googlesheets_find_replace | Find and replace text across a spreadsheet | Write |
googlesheets_format_cell | Apply text and background formatting to cells | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_clear_values | Clear cell content from a range (preserves formatting) | Write |
googlesheets_spreadsheets_values_batch_clear | Clear multiple ranges at once | Write |
googlesheets_batch_clear_values_by_data_filter | Clear ranges matching data filters | Write |
googlesheets_clear_basic_filter | Remove the basic filter from a sheet | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_add_sheet | Add a new sheet (GRID, OBJECT, or DATA_SOURCE type) | Write |
googlesheets_delete_sheet | Delete a sheet from a spreadsheet | Write |
googlesheets_update_sheet_properties | Rename, reposition, or change tab color of a sheet | Write |
googlesheets_update_spreadsheet_properties | Update spreadsheet-level properties (title, locale, timezone) | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_create_spreadsheet_row | Insert a new row at a specific index | Write |
googlesheets_create_spreadsheet_column | Insert a new column in a spreadsheet | Write |
googlesheets_delete_dimension | Delete rows or columns by range | Write |
googlesheets_insert_dimension | Insert empty rows or columns at a location | Write |
googlesheets_append_dimension | Append rows or columns to a sheet | Write |
googlesheets_update_dimension_properties | Hide/unhide rows or columns, set row height/column width | Write |
googlesheets_auto_resize_dimensions | Auto-fit column widths or row heights to content | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_upsert_rows | Update existing rows by key column, append new ones if not found | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_create_chart | Create a chart from a data range with configurable chart type | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_set_basic_filter | Set or update a basic filter on a sheet | Write |
googlesheets_set_data_validation_rule | Apply data validation rules or dropdowns to a range | Write |
googlesheets_get_conditional_format_rules | List conditional formatting rules for a sheet | Read |
googlesheets_mutate_conditional_format_rules | Add, update, delete, or reorder conditional format rules | Write |
googlesheets_get_data_validation_rules | Extract data validation rules from a spreadsheet | Read |
| Tool | Description | Mode |
|---|---|---|
googlesheets_create_google_sheet1 | Create a new spreadsheet, optionally in a specific Drive folder | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_spreadsheets_sheets_copy_to | Copy a single sheet to another spreadsheet | Write |
| Tool | Description | Mode |
|---|---|---|
googlesheets_search_developer_metadata | Search for developer metadata in a spreadsheet | Read |
clawlink_call_tool --tool "googlesheets_search_spreadsheets" \
--params '{
"query": "budget tracker"
}'
clawlink_call_tool --tool "googlesheets_values_get" \
--params '{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"range": "Sheet1!A1:C10"
}'
clawlink_call_tool --tool "googlesheets_values_update" \
--params '{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"range": "Sheet1!A1:B2",
"values": [["Product", "Revenue"], ["Widget", 1500]]
}'
clawlink_call_tool --tool "googlesheets_spreadsheets_values_append" \
--params '{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"range": "Sheet1!A:C",
"values": [["New Item", "Description", 100]]
}'
clawlink_call_tool --tool "googlesheets_upsert_rows" \
--params '{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"sheet": "Sheet1",
"key_column": "Email",
"headers": ["Email", "Phone", "Status"],
"data": [["john@example.com", "555-0101", "Active"]]
}'
clawlink_call_tool --tool "googlesheets_create_chart" \
--params '{
"spreadsheet_id": "YOUR_SPREADSHEET_ID",
"sheet_id": 0,
"chart_type": "BAR",
"data_range": "A1:B5",
"title": "Monthly Revenue"
}'
clawlink_list_integrations to confirm Google Sheets is connected.clawlink_list_tools --integration google-sheets to see the live catalog.clawlink_search_tools with a short query and integration google-sheets.┌─────────────────────────────────────────────────────────────┐
│ READ OPERATIONS (Safe) │
│ search → get → read → call │
│ │
│ Example: List sheets → Read range → Show results │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ WRITE OPERATIONS (Require Confirmation) │
│ describe → preview → confirm → call │
│ │
│ Example: Describe tool → Preview changes → User approves │
│ → Execute update │
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.null in value arrays to skip updating specific cells."" (empty string).Sheet1!A1:C10).upsert_rows auto-adds missing columns and performs partial column updates.find_replace is useful for fixing formula errors or bulk text updates.index field can cause conflicts.| Status / Error | Meaning |
|---|---|
| Tool not found | The tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration google-sheets. |
| Missing connection | Google Sheets is not connected. Direct the user to https://claw-link.dev/dashboard?add=google-sheets. |
SPREADSHEET_NOT_FOUND | Spreadsheet does not exist. Check the spreadsheet_id. |
INVALID_ARGUMENT | Invalid parameter or missing required field. Review the tool schema with clawlink_describe_tool. |
| Write rejected | User did not confirm a write action. Always confirm before executing writes. |
openclaw plugins list
/new as a standalone message to reload the catalog.openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
/new again and retry.google-sheets.clawlink_describe_tool to verify parameter names and types before calling.clawlink_preview_tool first.Powered by ClawLink — an integration hub for OpenClaw
