
Google Sheets
- 849 installs
- 76 repo stars
- Updated August 4, 2026
- vm0-ai/vm0-skills
google-sheets is an agent skill that reads and writes Google Sheets through the Google Sheets API v4 for developers who need coding agents to sync, query, or update spreadsheet data from shared links.
About
google-sheets is a vm0-skills agent skill for Google Sheets API v4 operations at base URL https://sheets.googleapis.com/v4/spreadsheets. The skill documents how to extract spreadsheet IDs from docs.google.com URLs, fetch spreadsheet metadata, and troubleshoot connector failures with zero doctor check-connector commands against GOOGLE_SHEETS_TOKEN. Developers reach for google-sheets when users share spreadsheet links, request sheet updates, or mention Excel/Sheets data during automation or backend tasks. Trigger it whenever an agent must programmatically read ranges, write cells, or inspect sheet structure without manual copy-paste.
- Sheets API v4 base URL with spreadsheet ID parsing from docs.google.com URLs
- Read ranges, full sheets, and spreadsheet metadata (titles, sheet IDs)
- Write cell ranges via JSON value update payloads
- Troubleshooting via zero doctor check-connector for GOOGLE_SHEETS_TOKEN
- curl + jq examples for GET metadata and values endpoints
Google Sheets by the numbers
- 849 all-time installs (skills.sh)
- Ranked #470 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vm0-ai/vm0-skills --skill google-sheetsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 849 |
|---|---|
| repo stars | ★ 76 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 4, 2026 |
| Repository | vm0-ai/vm0-skills ↗ |
How do agents read Google Sheets via API?
Let your coding agent read and write Google Sheets via the Sheets API v4 when users share spreadsheet links or ask to sync tabular data.
Who is it for?
Developers automating tabular data sync between applications and Google Sheets during agent-driven workflows.
Skip if: Teams needing Google Drive file management, BigQuery analytics, or offline Excel desktop automation without the Sheets API.
When should I use this skill?
A user mentions Google Sheets, shares a sheets.google.com link, or asks to read, update, or sync spreadsheet tabular data.
What you get
Updated spreadsheet cells, fetched range values, and spreadsheet metadata from Sheets API v4 responses.
- Fetched sheet ranges
- Updated cell values
- Spreadsheet metadata JSON
By the numbers
- Uses Google Sheets API v4 REST base URL
Files
Troubleshooting
If requests fail, run zero doctor check-connector --env-name GOOGLE_SHEETS_TOKEN or zero doctor check-connector --url https://sheets.googleapis.com/v4/spreadsheets --method GET
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):
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:
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:
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:
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-isUSER_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:
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:
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:
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:
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:
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:
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:
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.json12. Search for Values
Find cells containing specific text (read all then filter):
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
1. Rate limits: Default quota is 300 requests per minute per project 2. Use batch operations: Combine multiple reads/writes to reduce API calls 3. valueInputOption: Use USER_ENTERED for formulas, RAW for literal strings 4. URL encode ranges: The sheet-name separator in ranges must be encoded as %21 in URLs (e.g., Sheet1%21A1:D10)
Related skills
How it compares
Choose this for live Google Sheets read/write over CSV export-import workflows when users share spreadsheet links directly.
FAQ
Which API does the google-sheets skill use?
google-sheets targets Google Sheets API v4 at https://sheets.googleapis.com/v4/spreadsheets. Operations include fetching spreadsheet metadata and reading or writing cell ranges using the spreadsheet ID from the URL.
How do you find a spreadsheet ID?
google-sheets extracts the ID from URLs shaped like https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit. That ID is passed to Sheets API v4 endpoints for metadata and data operations.
Is Google Sheets safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.