Automate Google Sheets workflows including reading/writing data, managing spreadsheets and tabs, formatting cells, filtering rows, and upserting records through Composio's Google Sheets toolkit.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versiongooglesheets-automationExecute the skills CLI command in your project's root directory to begin installation:
Fetches googlesheets-automation from composiohq/awesome-claude-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate googlesheets-automation. Access via /googlesheets-automation in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
2
total installs
2
this week
51.4K
GitHub stars
0
upvotes
Run in your terminal
2
installs
2
this week
51.4K
stars
Automate Google Sheets workflows including reading/writing data, managing spreadsheets and tabs, formatting cells, filtering rows, and upserting records through Composio's Google Sheets toolkit.
Toolkit docs: composio.dev/toolkits/googlesheets
RUBE_MANAGE_CONNECTIONS with toolkit googlesheetsRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit googlesheetsWhen to use: User wants to read data from or write data to a Google Sheet
Tool sequence:
GOOGLESHEETS_SEARCH_SPREADSHEETS - Find spreadsheet by name if ID unknown [Prerequisite]GOOGLESHEETS_GET_SHEET_NAMES - Enumerate tab names to target the right sheet [Prerequisite]GOOGLESHEETS_BATCH_GET - Read data from one or more ranges [Required]GOOGLESHEETS_BATCH_UPDATE - Write data to a range or append rows [Required]GOOGLESHEETS_VALUES_UPDATE - Update a single specific range [Alternative]GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND - Append rows to end of table [Alternative]Key parameters:
spreadsheet_id: Alphanumeric ID from the spreadsheet URL (between '/d/' and '/edit')ranges: A1 notation array (e.g., 'Sheet1!A1:Z1000'); always use bounded rangessheet_name: Tab name (case-insensitive matching supported)values: 2D array where each inner array is a rowfirst_cell_location: Starting cell in A1 notation (omit to append)valueInputOption: 'USER_ENTERED' (parsed) or 'RAW' (literal)Pitfalls:
valueRanges[i].values; treat missing as empty arrayGOOGLESHEETS_BATCH_UPDATE values must be a 2D array (list of lists), even for a single rowtableRange; use returned updatedRange to verify placementWhen to use: User wants to create a new spreadsheet or manage tabs within one
Tool sequence:
GOOGLESHEETS_CREATE_GOOGLE_SHEET1 - Create a new spreadsheet [Required]GOOGLESHEETS_ADD_SHEET - Add a new tab/worksheet [Required]GOOGLESHEETS_UPDATE_SHEET_PROPERTIES - Rename, hide, reorder, or color tabs [Optional]GOOGLESHEETS_GET_SPREADSHEET_INFO - Get full spreadsheet metadata [Optional]GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE - Check if a specific tab exists [Optional]Key parameters:
title: Spreadsheet or sheet tab namespreadsheetId: Target spreadsheet IDforceUnique: Auto-append suffix if tab name exists (default true)properties.gridProperties: Set row/column counts, frozen rowsPitfalls:
index when creating multiple sheets in parallel (causes 'index too high' errors)GOOGLESHEETS_GET_SPREADSHEET_INFO can return 403 if account lacks accessWhen to use: User wants to find specific rows or apply filters to sheet data
Tool sequence:
GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW - Find first row matching exact cell value [Required]GOOGLESHEETS_SET_BASIC_FILTER - Apply filter/sort to a range [Alternative]GOOGLESHEETS_CLEAR_BASIC_FILTER - Remove existing filter [Optional]GOOGLESHEETS_BATCH_GET - Read filtered results [Optional]Key parameters:
query: Exact text value to match (matches entire cell content)range: A1 notation range to search withincase_sensitive: Boolean for case-sensitive matching (default false)filter.range: Grid range with sheet_id for basic filterfilter.criteria: Column-based filter conditionsfilter.sortSpecs: Sort specificationsPitfalls:
GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW matches entire cell content, not substringsWhen to use: User wants to update existing rows or insert new ones based on a unique key column
Tool sequence:
GOOGLESHEETS_UPSERT_ROWS - Update matching rows or append new ones [Required]Key parameters:
spreadsheetId: Target spreadsheet IDsheetName: Tab namekeyColumn: Column header name used as unique identifier (e.g., 'Email', 'SKU')headers: List of column names for the datarows: 2D array of data rowsstrictMode: Error on mismatched column counts (default true)Pitfalls:
keyColumn must be an actual header name, NOT a column letter (e.g., 'Email' not 'A')headers is NOT provided, first row of rows is treated as headersstrictMode=true, rows with more values than headers cause an errorWhen to use: User wants to apply formatting (bold, colors, font size) to cells
Tool sequence:
GOOGLESHEETS_GET_SPREADSHEET_INFO - Get numeric sheetId for target tab [Prerequisite]GOOGLESHEETS_FORMAT_CELL - Apply formatting to a range [Required]GOOGLESHEETS_UPDATE_SHEET_PROPERTIES - Change frozen rows, column widths [Optional]Key parameters:
spreadsheet_id: Spreadsheet IDworksheet_id: Numeric sheetId (NOT tab name); get from GET_SPREADSHEET_INFOrange: A1 notation (e.g., 'A1:F1') - preferred over index fieldsbold, italic, underline, strikethrough: Boolean formatting optionsred, green, blue: Background color as 0.0-1.0 floats (NOT 0-255 ints)fontSize: Font size in pointsPitfalls:
worksheet_id, not tab title; get from spreadsheet metadataGOOGLESHEETS_SEARCH_SPREADSHEETS with queryGOOGLESHEETS_GET_SPREADSHEET_INFO, extract from sheets metadataGOOGLESHEETS_FIND_WORKSHEET_BY_TITLEGoogle Sheets enforces strict rate limits:
GOOGLESHEETS_BATCH_GET and GOOGLESHEETS_BATCH_UPDATE for efficiencyGOOGLESHEETS_UPSERT_ROWS for CRM syncs, inventory updates, and dedup scenariosfirst_cell_location) is safest for adding new recordsGOOGLESHEETS_CLEAR_VALUES to clear content while preserving formattingFORMAT_CELL needs numeric sheetId, not tab titleGOOGLESHEETS_DELETE_DIMENSION is irreversible; double-check bounds| Task | Tool Slug | Key Params |
|---|---|---|
| Search spreadsheets | GOOGLESHEETS_SEARCH_SPREADSHEETS |
query, search_type |
| Create spreadsheet | GOOGLESHEETS_CREATE_GOOGLE_SHEET1 |
title |
| List tabs | GOOGLESHEETS_GET_SHEET_NAMES |
spreadsheet_id |
| Add tab | GOOGLESHEETS_ADD_SHEET |
spreadsheetId, title |
| Read data | GOOGLESHEETS_BATCH_GET |
spreadsheet_id, ranges |
| Read single range | GOOGLESHEETS_VALUES_GET |
spreadsheet_id, range |
| Write data | GOOGLESHEETS_BATCH_UPDATE |
spreadsheet_id, sheet_name, values |
| Update range | GOOGLESHEETS_VALUES_UPDATE |
spreadsheet_id, range, values |
| Append rows | GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND |
spreadsheetId, range, values |
| Upsert rows | GOOGLESHEETS_UPSERT_ROWS |
spreadsheetId, sheetName, keyColumn, rows |
| Lookup row | GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW |
spreadsheet_id, query |
| Format cells | GOOGLESHEETS_FORMAT_CELL |
spreadsheet_id, worksheet_id, range |
| Set filter | GOOGLESHEETS_SET_BASIC_FILTER |
spreadsheetId, filter |
| Clear values | GOOGLESHEETS_CLEAR_VALUES |
spreadsheet_id, range |
| Delete rows/cols | GOOGLESHEETS_DELETE_DIMENSION |
spreadsheet_id, sheet_name, dimension |
| Spreadsheet info | GOOGLESHEETS_GET_SPREADSHEET_INFO |
spreadsheet_id |
| Update tab props | GOOGLESHEETS_UPDATE_SHEET_PROPERTIES |
spreadsheetId, properties |
Powered by Composio
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
kunchenguid/no-mistakes
BuilderIO/skills
jwynia/agent-skills
mindrally/skills
kostja94/marketing-skills
github/awesome-copilot
googlesheets-automation fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Solid pick for teams standardizing on skills: googlesheets-automation is focused, and the summary matches what you get after install.
googlesheets-automation is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Keeps context tight: googlesheets-automation is the kind of skill you can hand to a new teammate without a long onboarding doc.
Keeps context tight: googlesheets-automation is the kind of skill you can hand to a new teammate without a long onboarding doc.
Solid pick for teams standardizing on skills: googlesheets-automation is focused, and the summary matches what you get after install.
googlesheets-automation reduced setup friction for our internal harness; good balance of opinion and flexibility.
googlesheets-automation has been reliable in day-to-day use. Documentation quality is above average for community skills.
Registry listing for googlesheets-automation matched our evaluation — installs cleanly and behaves as described in the markdown.
googlesheets-automation reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 42