{"id":"81c197bc-7b4e-48d4-b365-41e164a0fe77","shortId":"uTnDQT","kind":"skill","title":"google-sheets","tagline":"Read and write Google Sheets spreadsheets - get content, update cells, append rows, fetch specific ranges,\nsearch for spreadsheets, and view metadata. Use when user asks to: read a spreadsheet, update cells,\nadd data to Google Sheets, find a spreadsheet, check sheet contents, exp","description":"# Google Sheets\n\nLightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access.\n\n> **Requires Google Workspace account.** Personal Gmail accounts are not supported.\n\n## First-Time Setup\n\nAuthenticate with Google (opens browser):\n```bash\npython scripts/auth.py login\n```\n\nCheck authentication status:\n```bash\npython scripts/auth.py status\n```\n\nLogout when needed:\n```bash\npython scripts/auth.py logout\n```\n\n## Read Commands\n\nAll operations via `scripts/sheets.py`. Auto-authenticates on first use if not logged in.\n\n```bash\n# Get spreadsheet content as plain text (default)\npython scripts/sheets.py get-text SPREADSHEET_ID\n\n# Get spreadsheet content as CSV\npython scripts/sheets.py get-text SPREADSHEET_ID --format csv\n\n# Get spreadsheet content as JSON\npython scripts/sheets.py get-text SPREADSHEET_ID --format json\n\n# Get values from a specific range (A1 notation)\npython scripts/sheets.py get-range SPREADSHEET_ID \"Sheet1!A1:D10\"\npython scripts/sheets.py get-range SPREADSHEET_ID \"A1:C5\"\n\n# Find spreadsheets by search query\npython scripts/sheets.py find \"budget 2024\"\npython scripts/sheets.py find \"sales report\" --limit 5\n\n# Get spreadsheet metadata (sheets, dimensions, etc.)\npython scripts/sheets.py get-metadata SPREADSHEET_ID\n```\n\n## Write Commands\n\n```bash\n# Update a range of cells with values (JSON 2D array)\npython scripts/sheets.py update-range SPREADSHEET_ID \"Sheet1!A1:B2\" '[[\"Hello\",\"World\"],[\"Foo\",\"Bar\"]]'\n\n# Update with RAW input (no formula parsing, treats everything as literal text)\npython scripts/sheets.py update-range SPREADSHEET_ID \"Sheet1!A1:B1\" '[[\"=SUM(A1:A5)\",\"text\"]]' --raw\n\n# Append rows after the last data row\npython scripts/sheets.py append-rows SPREADSHEET_ID \"Sheet1!A:Z\" '[[\"New Row Col A\",\"New Row Col B\"]]'\n\n# Clear values from a range (keeps formatting)\npython scripts/sheets.py clear-range SPREADSHEET_ID \"Sheet1!A1:B10\"\n\n# Batch update (advanced - for formatting, merging, etc.)\npython scripts/sheets.py batch-update SPREADSHEET_ID '[{\"updateCells\":{\"range\":{\"sheetId\":0},\"fields\":\"userEnteredValue\"}}]'\n```\n\n## Spreadsheet ID\n\nYou can use either:\n- The spreadsheet ID: `1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms`\n- The full URL: `https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit`\n\nThe script automatically extracts the ID from URLs.\n\n## Output Formats\n\n### Text (default)\nHuman-readable format with pipe separators:\n```\nSpreadsheet Title: Sales Data\nSheet Name: Q1\nName | Revenue | Units\nProduct A | 10000 | 50\nProduct B | 15000 | 75\n```\n\n### CSV\nStandard CSV format, suitable for further processing:\n```\nName,Revenue,Units\nProduct A,10000,50\nProduct B,15000,75\n```\n\n### JSON\nStructured data format:\n```json\n{\n  \"Q1\": [\n    [\"Name\", \"Revenue\", \"Units\"],\n    [\"Product A\", \"10000\", \"50\"]\n  ]\n}\n```\n\n## A1 Notation Examples\n\n- `Sheet1!A1:B10` - Range A1 to B10 on Sheet1\n- `Sheet1!A:A` - All of column A on Sheet1\n- `Sheet1!1:1` - All of row 1 on Sheet1\n- `A1:C5` - Range on the first sheet\n\n## Value Input Options\n\n- **USER_ENTERED** (default): Values are parsed as if typed by a user. Numbers, dates, and formulas are interpreted.\n- **RAW** (`--raw` flag): Values are stored exactly as provided. No parsing of formulas or number formatting.\n\n## Token Management\n\nTokens stored securely using the system keyring:\n- **macOS**: Keychain\n- **Windows**: Windows Credential Locker\n- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)\n\nService name: `google-sheets-skill-oauth`\n\nTokens automatically refresh when expired using Google's cloud function.","tags":["google","sheets","skills","sanjay3290","agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research"],"capabilities":["skill","source-sanjay3290","skill-google-sheets","topic-agent-skills","topic-ai-skills","topic-atlassian","topic-azure-devops","topic-claude-code","topic-claude-skills","topic-confluence","topic-deep-research","topic-elevenlabs","topic-gmail","topic-google-calendar","topic-google-drive"],"categories":["ai-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sanjay3290/ai-skills/google-sheets","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sanjay3290/ai-skills","source_repo":"https://github.com/sanjay3290/ai-skills","install_from":"skills.sh"}},"qualityScore":"0.574","qualityRationale":"deterministic score 0.57 from registry signals: · indexed on github topic:agent-skills · 248 github stars · SKILL.md body (3,606 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:54:10.738Z","embedding":null,"createdAt":"2026-04-18T22:05:16.277Z","updatedAt":"2026-05-02T18:54:10.738Z","lastSeenAt":"2026-05-02T18:54:10.738Z","tsv":"'/spreadsheets/d/1bximvs0xra5nfmdkvbdbzjgmuuqptlbs74ogve2upms/edit':348 '0':330 '1':440,441,445 '10000':380,399,416 '15000':384,403 '1bximvs0xra5nfmdkvbdbzjgmuuqptlbs74ogve2upms':342 '2024':196 '2d':228 '5':203 '50':381,400,417 '75':385,404 'a1':166,176,185,238,264,267,311,418,422,425,448 'a5':268 'access':63 'account':67,70 'add':35 'advanc':315 'api':510 'append':14,271,281 'append-row':280 'array':229 'ask':28 'authent':56,78,88,109 'auto':108 'auto-authent':107 'automat':351,524 'b':295,383,402 'b1':265 'b10':312,423,427 'b2':239 'bar':243 'bash':83,90,97,117,219 'batch':313,323 'batch-upd':322 'browser':82 'budget':195 'c5':186,449 'cell':13,34,224 'check':43,87 'clear':296,306 'clear-rang':305 'cloud':531 'col':290,294 'column':435 'command':102,218 'content':11,45,120,134,148 'credenti':505 'csv':136,145,386,388 'd10':177 'data':36,276,371,407 'date':471 'default':124,360,460 'dimens':208 'docs.google.com':347 'docs.google.com/spreadsheets/d/1bximvs0xra5nfmdkvbdbzjgmuuqptlbs74ogve2upms/edit':346 'either':338 'enter':459 'etc':209,319,515 'everyth':252 'exact':482 'exampl':420 'exp':46 'expir':527 'extract':352 'fetch':16 'field':331 'find':40,187,194,199 'first':75,111,453 'first-tim':74 'flag':478 'foo':242 'format':144,158,302,317,358,364,389,408,491 'formula':249,473,488 'full':61,344 'function':532 'get':10,118,128,132,140,146,154,160,171,181,204,213 'get-metadata':212 'get-rang':170,180 'get-text':127,139,153 'gmail':69 'gnome':511 'googl':2,7,38,47,50,65,80,519,529 'google-sheet':1 'google-sheets-skill-oauth':518 'hello':240 'human':362 'human-read':361 'id':131,143,157,174,184,216,236,262,284,309,326,334,341,354 'input':247,456 'integr':52 'interpret':475 'json':150,159,227,405,409 'kde':513 'keep':301 'keychain':502 'keyr':500,512 'last':275 'lightweight':49 'limit':202 'linux':507 'liter':254 'locker':506 'log':115 'login':86 'logout':94,100 'maco':501 'manag':493 'mcp':58 'merg':318 'metadata':24,206,214 'name':373,375,394,411,517 'need':96 'new':288,292 'notat':167,419 'number':470,490 'oauth':55,522 'open':81 'oper':104 'option':457 'output':357 'pars':250,463,486 'person':68 'pipe':366 'plain':122 'process':393 'product':378,382,397,401,414 'provid':484 'python':84,91,98,125,137,151,168,178,192,197,210,230,256,278,303,320 'q1':374,410 'queri':191 'rang':18,165,172,182,222,234,260,300,307,328,424,450 'raw':246,270,476,477 'read':4,30,101 'read/write':62 'readabl':363 'refresh':525 'report':201 'requir':60,64 'revenu':376,395,412 'row':15,272,277,282,289,293,444 'sale':200,370 'script':350 'scripts/auth.py':85,92,99 'scripts/sheets.py':106,126,138,152,169,179,193,198,211,231,257,279,304,321 'search':19,190 'secret':508 'secur':496 'separ':367 'server':59 'servic':509,516 'setup':77 'sheet':3,8,39,44,48,51,207,372,454,520 'sheet1':175,237,263,285,310,421,429,430,438,439,447 'sheetid':329 'skill':521 'skill-google-sheets' 'source-sanjay3290' 'specif':17,164 'spreadsheet':9,21,32,42,119,130,133,142,147,156,173,183,188,205,215,235,261,283,308,325,333,340,368 'standalon':54 'standard':387 'status':89,93 'store':481,495 'structur':406 'suitabl':390 'sum':266 'support':73 'system':499 'text':123,129,141,155,255,269,359 'time':76 'titl':369 'token':492,494,523 'topic-agent-skills' 'topic-ai-skills' 'topic-atlassian' 'topic-azure-devops' 'topic-claude-code' 'topic-claude-skills' 'topic-confluence' 'topic-deep-research' 'topic-elevenlabs' 'topic-gmail' 'topic-google-calendar' 'topic-google-drive' 'treat':251 'type':466 'unit':377,396,413 'updat':12,33,220,233,244,259,314,324 'update-rang':232,258 'updatecel':327 'url':345,356 'use':25,112,337,497,528 'user':27,458,469 'userenteredvalu':332 'valu':161,226,297,455,461,479 'via':105 'view':23 'wallet':514 'window':503,504 'workspac':66 'world':241 'write':6,217 'z':287","prices":[{"id":"fe035e31-64fe-401e-a461-4cf98f8acfce","listingId":"81c197bc-7b4e-48d4-b365-41e164a0fe77","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sanjay3290","category":"ai-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:05:16.277Z"}],"sources":[{"listingId":"81c197bc-7b4e-48d4-b365-41e164a0fe77","source":"github","sourceId":"sanjay3290/ai-skills/google-sheets","sourceUrl":"https://github.com/sanjay3290/ai-skills/tree/main/skills/google-sheets","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:16.277Z","lastSeenAt":"2026-05-02T18:54:10.738Z"}],"details":{"listingId":"81c197bc-7b4e-48d4-b365-41e164a0fe77","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sanjay3290","slug":"google-sheets","github":{"repo":"sanjay3290/ai-skills","stars":248,"topics":["agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research","elevenlabs","gmail","google-calendar","google-drive","google-workspace","imagen","jira","mcp","mysql","notebooklm","postgresql","text-to-speech"],"license":"apache-2.0","html_url":"https://github.com/sanjay3290/ai-skills","pushed_at":"2026-04-13T14:16:19Z","description":"Collection of agent skills for AI coding assistants","skill_md_sha":"cca3b362a3b66ab2a0c3db587adda65e45af72a7","skill_md_path":"skills/google-sheets/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sanjay3290/ai-skills/tree/main/skills/google-sheets"},"layout":"multi","source":"github","category":"ai-skills","frontmatter":{"name":"google-sheets","license":"Apache-2.0","description":"Read and write Google Sheets spreadsheets - get content, update cells, append rows, fetch specific ranges,\nsearch for spreadsheets, and view metadata. Use when user asks to: read a spreadsheet, update cells,\nadd data to Google Sheets, find a spreadsheet, check sheet contents, export spreadsheet data, or get cell values.\nLightweight integration with standalone OAuth authentication supporting full read/write access."},"skills_sh_url":"https://skills.sh/sanjay3290/ai-skills/google-sheets"},"updatedAt":"2026-05-02T18:54:10.738Z"}}