Marketplace googlesheets-automation
Automate Google Sheets operations (read, write, format, filter, manage spreadsheets) via Rube MCP (Composio). Read/write data, manage tabs, apply formatting, and search rows programmatically.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/sickn33/googlesheets-automation" ~/.claude/skills/aiskillstore-marketplace-googlesheets-automation && rm -rf "$T"
skills/sickn33/googlesheets-automation/SKILL.mdGoogle Sheets Automation via Rube MCP
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.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Google Sheets connection via
with toolkitRUBE_MANAGE_CONNECTIONSgooglesheets - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
Setup
Get 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.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONSgooglesheets - If connection is not ACTIVE, follow the returned auth link to complete Google OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Read and Write Data
When to use: User wants to read data from or write data to a Google Sheet
Tool sequence:
- Find spreadsheet by name if ID unknown [Prerequisite]GOOGLESHEETS_SEARCH_SPREADSHEETS
- Enumerate tab names to target the right sheet [Prerequisite]GOOGLESHEETS_GET_SHEET_NAMES
- Read data from one or more ranges [Required]GOOGLESHEETS_BATCH_GET
- Write data to a range or append rows [Required]GOOGLESHEETS_BATCH_UPDATE
- Update a single specific range [Alternative]GOOGLESHEETS_VALUES_UPDATE
- Append rows to end of table [Alternative]GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND
Key parameters:
: Alphanumeric ID from the spreadsheet URL (between '/d/' and '/edit')spreadsheet_id
: A1 notation array (e.g., 'Sheet1!A1:Z1000'); always use bounded rangesranges
: Tab name (case-insensitive matching supported)sheet_name
: 2D array where each inner array is a rowvalues
: Starting cell in A1 notation (omit to append)first_cell_location
: 'USER_ENTERED' (parsed) or 'RAW' (literal)valueInputOption
Pitfalls:
- Mis-cased or non-existent tab names error "Sheet 'X' not found"
- Empty ranges may omit
; treat missing as empty arrayvalueRanges[i].values
values must be a 2D array (list of lists), even for a single rowGOOGLESHEETS_BATCH_UPDATE- Unbounded ranges like 'A:Z' on sheets with >10,000 rows may cause timeouts; always bound with row limits
- Append follows the detected
; use returnedtableRange
to verify placementupdatedRange
2. Create and Manage Spreadsheets
When to use: User wants to create a new spreadsheet or manage tabs within one
Tool sequence:
- Create a new spreadsheet [Required]GOOGLESHEETS_CREATE_GOOGLE_SHEET1
- Add a new tab/worksheet [Required]GOOGLESHEETS_ADD_SHEET
- Rename, hide, reorder, or color tabs [Optional]GOOGLESHEETS_UPDATE_SHEET_PROPERTIES
- Get full spreadsheet metadata [Optional]GOOGLESHEETS_GET_SPREADSHEET_INFO
- Check if a specific tab exists [Optional]GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE
Key parameters:
: Spreadsheet or sheet tab nametitle
: Target spreadsheet IDspreadsheetId
: Auto-append suffix if tab name exists (default true)forceUnique
: Set row/column counts, frozen rowsproperties.gridProperties
Pitfalls:
- Sheet names must be unique within a spreadsheet
- Default sheet names are locale-dependent ('Sheet1' in English, 'Hoja 1' in Spanish)
- Don't use
when creating multiple sheets in parallel (causes 'index too high' errors)index
can return 403 if account lacks accessGOOGLESHEETS_GET_SPREADSHEET_INFO
3. Search and Filter Rows
When to use: User wants to find specific rows or apply filters to sheet data
Tool sequence:
- Find first row matching exact cell value [Required]GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW
- Apply filter/sort to a range [Alternative]GOOGLESHEETS_SET_BASIC_FILTER
- Remove existing filter [Optional]GOOGLESHEETS_CLEAR_BASIC_FILTER
- Read filtered results [Optional]GOOGLESHEETS_BATCH_GET
Key parameters:
: Exact text value to match (matches entire cell content)query
: A1 notation range to search withinrange
: Boolean for case-sensitive matching (default false)case_sensitive
: Grid range with sheet_id for basic filterfilter.range
: Column-based filter conditionsfilter.criteria
: Sort specificationsfilter.sortSpecs
Pitfalls:
matches entire cell content, not substringsGOOGLESHEETS_LOOKUP_SPREADSHEET_ROW- Sheet names with spaces must be single-quoted in ranges (e.g., "'My Sheet'!A:Z")
- Bare sheet names without ranges are not supported for lookup; always specify a range
4. Upsert Rows by Key
When to use: User wants to update existing rows or insert new ones based on a unique key column
Tool sequence:
- Update matching rows or append new ones [Required]GOOGLESHEETS_UPSERT_ROWS
Key parameters:
: Target spreadsheet IDspreadsheetId
: Tab namesheetName
: Column header name used as unique identifier (e.g., 'Email', 'SKU')keyColumn
: List of column names for the dataheaders
: 2D array of data rowsrows
: Error on mismatched column counts (default true)strictMode
Pitfalls:
must be an actual header name, NOT a column letter (e.g., 'Email' not 'A')keyColumn- If
is NOT provided, first row ofheaders
is treated as headersrows - With
, rows with more values than headers cause an errorstrictMode=true - Auto-adds missing columns to the sheet
5. Format Cells
When to use: User wants to apply formatting (bold, colors, font size) to cells
Tool sequence:
- Get numeric sheetId for target tab [Prerequisite]GOOGLESHEETS_GET_SPREADSHEET_INFO
- Apply formatting to a range [Required]GOOGLESHEETS_FORMAT_CELL
- Change frozen rows, column widths [Optional]GOOGLESHEETS_UPDATE_SHEET_PROPERTIES
Key parameters:
: Spreadsheet IDspreadsheet_id
: Numeric sheetId (NOT tab name); get from GET_SPREADSHEET_INFOworksheet_id
: A1 notation (e.g., 'A1:F1') - preferred over index fieldsrange
,bold
,italic
,underline
: Boolean formatting optionsstrikethrough
,red
,green
: Background color as 0.0-1.0 floats (NOT 0-255 ints)blue
: Font size in pointsfontSize
Pitfalls:
- Requires numeric
, not tab title; get from spreadsheet metadataworksheet_id - Color channels are 0-1 floats (e.g., 1.0 for full red), NOT 0-255 integers
- Responses may return empty reply objects ([{}]); verify formatting via readback
- Format one range per call; batch formatting requires separate calls
Common Patterns
ID Resolution
- Spreadsheet name -> ID:
withGOOGLESHEETS_SEARCH_SPREADSHEETSquery - Tab name -> sheetId:
, extract from sheets metadataGOOGLESHEETS_GET_SPREADSHEET_INFO - Tab existence check:
GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE
Rate Limits
Google Sheets enforces strict rate limits:
- Max 60 reads/minute and 60 writes/minute
- Exceeding limits causes errors; batch operations where possible
- Use
andGOOGLESHEETS_BATCH_GET
for efficiencyGOOGLESHEETS_BATCH_UPDATE
Data Patterns
- Always read before writing to understand existing layout
- Use
for CRM syncs, inventory updates, and dedup scenariosGOOGLESHEETS_UPSERT_ROWS - Append mode (omit
) is safest for adding new recordsfirst_cell_location - Use
to clear content while preserving formattingGOOGLESHEETS_CLEAR_VALUES
Known Pitfalls
- Tab names: Locale-dependent defaults; 'Sheet1' may not exist in non-English accounts
- Range notation: Sheet names with spaces need single quotes in A1 notation
- Unbounded ranges: Can timeout on large sheets; always specify row bounds (e.g., 'A1:Z10000')
- 2D arrays: All value parameters must be list-of-lists, even for single rows
- Color values: Floats 0.0-1.0, not integers 0-255
- Formatting IDs:
needs numeric sheetId, not tab titleFORMAT_CELL - Rate limits: 60 reads/min and 60 writes/min; batch to stay within limits
- Delete dimension:
is irreversible; double-check boundsGOOGLESHEETS_DELETE_DIMENSION
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Search spreadsheets | | , |
| Create spreadsheet | | |
| List tabs | | |
| Add tab | | , |
| Read data | | , |
| Read single range | | , |
| Write data | | , , |
| Update range | | , , |
| Append rows | | , , |
| Upsert rows | | , , , |
| Lookup row | | , |
| Format cells | | , , |
| Set filter | | , |
| Clear values | | , range |
| Delete rows/cols | | , , dimension |
| Spreadsheet info | | |
| Update tab props | | , properties |