Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vm0-ai avatar

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-sheets

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs849
repo stars76
Security audit2 / 3 scanners passed
Last updatedAugust 4, 2026
Repositoryvm0-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

SKILL.mdMarkdownGitHub ↗

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-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:

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.json

12. 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

NotationDescription
Sheet1!A1Single cell A1 in Sheet1
Sheet1!A1:B2Range from A1 to B2
Sheet1!A:AEntire column A
Sheet1!1:1Entire row 1
Sheet1!A1:CFrom A1 to end of column C
'Sheet Name'!A1Sheet 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.

Backend & APIsintegrationsbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.