google-sheets

安装量: 247
排名: #3535

安装

npx skills add https://github.com/vm0-ai/vm0-skills --skill google-sheets
Google Sheets API
Use the Google Sheets API via direct
curl
calls to
read, write, and manage spreadsheet data
.
Official docs:
https://developers.google.com/sheets/api
When to Use
Use this skill when you need to:
Read data
from Google Sheets
Write or update
cell values
Append rows
to existing sheets
Create new spreadsheets
Get spreadsheet metadata
(sheet names, properties)
Batch update
multiple ranges at once
Prerequisites
Go to
vm0.ai
Settings → Connectors
and connect
Google Sheets
. vm0 will automatically inject the required
GOOGLE_SHEETS_TOKEN
environment variable.
Important:
When using
$VAR
in a command that pipes to another command, wrap the command containing
$VAR
in
bash -c '...'
. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.
Placeholders:
Values in
{curly-braces}
like
{spreadsheet-id}
are placeholders. Replace them with actual values when executing.
Important:
In range notation, the sheet-name separator
!
must be URL encoded as
%21
in the URL path. For example,
Sheet1!A1:D10
becomes
Sheet1%21A1:D10
. All examples below use this encoding.
How to Use
Base URL:
https://sheets.googleapis.com/v4/spreadsheets
Finding your Spreadsheet ID:
The spreadsheet ID is in the URL:
https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit
1. Get Spreadsheet Metadata
Get information about a spreadsheet (sheets, properties):
bash
-c
'curl -s "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN"'
|
jq
'{title: .properties.title, sheets: [.sheets[].properties | {sheetId, title}]}'
2. Read Cell Values
Read a range of cells:
bash
-c
'curl -s "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1%21A1:D10" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN"'
|
jq
'.values'
3. Read Entire Sheet
Read all data from a sheet:
bash
-c
'curl -s "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN"'
|
jq
'.values'
4. Write Cell Values
Update a range of cells.
Write to
/tmp/gsheets_request.json
:
{
"values"
:
[
[
"Name"
,
"Email"
,
"Status"
]
]
}
Then run:
bash
-c
'curl -s -X PUT "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1%21A1:C1?valueInputOption=USER_ENTERED" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'.updatedCells'
valueInputOption:
RAW
Values are stored as-is
USER_ENTERED
Values are parsed as if typed by user (formulas evaluated)
5. Append Rows
Add new rows to the end of a sheet.
Write to
/tmp/gsheets_request.json
:
{
"values"
:
[
[
"John Doe"
,
"john@example.com"
,
"Active"
]
]
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1%21A:C:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'.updates | {updatedRange, updatedRows}'
6. Batch Read Multiple Ranges
Read multiple ranges in one request:
bash
-c
'curl -s "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values:batchGet?ranges=Sheet1%21A1:B5&ranges=Sheet1%21D1:E5" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN"'
|
jq
'.valueRanges'
7. Batch Update Multiple Ranges
Update multiple ranges in one request.
Write to
/tmp/gsheets_request.json
:
{
"valueInputOption"
:
"USER_ENTERED"
,
"data"
:
[
{
"range"
:
"Sheet1!A1"
,
"values"
:
[
[
"Header 1"
]
]
}
,
{
"range"
:
"Sheet1!B1"
,
"values"
:
[
[
"Header 2"
]
]
}
]
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values:batchUpdate" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'.totalUpdatedCells'
8. Clear Cell Values
Clear a range of cells.
Write to
/tmp/gsheets_request.json
:
{
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1%21A2:C100:clear" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'.clearedRange'
9. Create New Spreadsheet
Write to
/tmp/gsheets_request.json
:
{
"properties"
:
{
"title"
:
"My New Spreadsheet"
}
,
"sheets"
:
[
{
"properties"
:
{
"title"
:
"Data"
}
}
]
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'{spreadsheetId, spreadsheetUrl}'
10. Add New Sheet
Add a new sheet to an existing spreadsheet.
Write to
/tmp/gsheets_request.json
:
{
"requests"
:
[
{
"addSheet"
:
{
"properties"
:
{
"title"
:
"New Sheet"
}
}
}
]
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}:batchUpdate" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
|
jq
'.replies[0].addSheet.properties'
11. Delete Sheet
Delete a sheet from a spreadsheet (use sheetId from metadata).
Write to
/tmp/gsheets_request.json
:
{
"requests"
:
[
{
"deleteSheet"
:
{
"sheetId"
:
123456789
}
}
]
}
Then run:
bash
-c
'curl -s -X POST "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}:batchUpdate" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN" --header "Content-Type: application/json" -d @/tmp/gsheets_request.json'
12. Search for Values
Find cells containing specific text (read all then filter):
bash
-c
'curl -s "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet-id}/values/Sheet1" --header "Authorization: Bearer $GOOGLE_SHEETS_TOKEN"'
|
jq
'[.values[] | select(.[0] | ascii_downcase | contains("search_term"))]'
A1 Notation Reference
Notation
Description
Sheet1!A1
Single cell A1 in Sheet1
Sheet1!A1:B2
Range from A1 to B2
Sheet1!A:A
Entire column A
Sheet1!1:1
Entire row 1
Sheet1!A1:C
From A1 to end of column C
'Sheet Name'!A1
Sheet names with spaces need quotes
Guidelines
Rate limits
Default quota is 300 requests per minute per project
Use batch operations
Combine multiple reads/writes to reduce API calls
valueInputOption
Use
USER_ENTERED
for formulas,
RAW
for literal strings
URL encode ranges
The sheet-name separator in ranges must be encoded as %21 in URLs (e.g., Sheet1%21A1:D10 )
返回排行榜