google-sheets
Read and write Google Sheets spreadsheets - get content, update cells, append rows, fetch specific ranges, search for spreadsheets, and view metadata. Use when user asks to: read a spreadsheet, update cells, add data to Google Sheets, find a spreadsheet, check sheet contents, export spreadsheet data, or get cell values. Lightweight integration with standalone OAuth authentication supporting full read/write access.
适合你,如果经常需要程序化操作 Google Sheets 数据
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
~/.claude/skills/(项目级 .claude/skills/)~/.codex/skills/npx oh-my-skill add sanjay3290/ai-skills/google-sheetscurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- sanjay3290/ai-skills/google-sheetsnpx oh-my-skill verify sanjay3290/ai-skills/google-sheets怎么用
技能原文 SKILL.md
Google Sheets
Lightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access.
Requires Google Workspace account. Personal Gmail accounts are not supported.
First-Time Setup
Authenticate with Google (opens browser):
python scripts/auth.py login
Check authentication status:
python scripts/auth.py status
Logout when needed:
python scripts/auth.py logout
Read Commands
All operations via scripts/sheets.py. Auto-authenticates on first use if not logged in.
# Get spreadsheet content as plain text (default) python scripts/sheets.py get-text SPREADSHEET_ID # Get spreadsheet content as CSV python scripts/sheets.py get-text SPREADSHEET_ID --format csv # Get spreadsheet content as JSON python scripts/sheets.py get-text SPREADSHEET_ID --format json # Get values from a specific range (A1 notation) python scripts/sheets.py get-range SPREADSHEET_ID "Sheet1!A1:D10" python scripts/sheets.py get-range SPREADSHEET_ID "A1:C5" # Find spreadsheets by search query python scripts/sheets.py find "budget 2024" python scripts/sheets.py find "sales report" --limit 5 # Get spreadsheet metadata (sheets, dimensions, etc.) python scripts/sheets.py get-metadata SPREADSHEET_ID
Write Commands
# Update a range of cells with values (JSON 2D array)
python scripts/sheets.py update-range SPREADSHEET_ID "Sheet1!A1:B2" '[["Hello","World"],["Foo","Bar"]]'
# Update with RAW input (no formula parsing, treats everything as literal text)
python scripts/sheets.py update-range SPREADSHEET_ID "Sheet1!A1:B1" '[["=SUM(A1:A5)","text"]]' --raw
# Append rows after the last data row
python scripts/sheets.py append-rows SPREADSHEET_ID "Sheet1!A:Z" '[["New Row Col A","New Row Col B"]]'
# Clear values from a range (keeps formatting)
python scripts/sheets.py clear-range SPREADSHEET_ID "Sheet1!A1:B10"
# Batch update (advanced - for formatting, merging, etc.)
python scripts/sheets.py batch-update SPREADSHEET_ID '[{"updateCells":{"range":{"sheetId":0},"fields":"userEnteredValue"}}]'
Spreadsheet ID
You can use either:
- The spreadsheet ID:
1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms - The full URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
The script automatically extracts the ID from URLs.
Output Formats
Text (default)
Human-readable format with pipe separators:
Spreadsheet Title: Sales Data Sheet Name: Q1 Name | Revenue | Units Product A | 10000 | 50 Product B | 15000 | 75
CSV
Standard CSV format, suitable for further processing:
Name,Revenue,Units Product A,10000,50 Product B,15000,75
JSON
Structured data format:
{
"Q1": [
["Name", "Revenue", "Units"],
["Product A", "10000", "50"]
]
}
A1 Notation Examples
Sheet1!A1:B10- Range A1 to B10 on Sheet1Sheet1!A:A- All of column A on Sheet1Sheet1!1:1- All of row 1 on Sheet1A1:C5- Range on the first sheet
Value Input Options
- USER_ENTERED (default): Values are parsed as if typed by a user. Numbers, dates, and formulas are interpreted.
- RAW (
--rawflag): Values are stored exactly as provided. No parsing of formulas or number formatting.
Token Management
Tokens stored securely using the system keyring:
- macOS: Keychain
- Windows: Windows Credential Locker
- Linux: Secret Service API (GNOME Keyring, KDE Wallet, etc.)
Service name: google-sheets-skill-oauth
Tokens automatically refresh when expired using Google's cloud function.