[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71SF3XD4B7KMJFBCMEF704P":3,"skill-same:01M71SF3XD4B7KMJFBCMEF704P":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":13,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M71SF3XD4B7KMJFBCMEF704P","googlesheets-automation",null,"Automate Google Sheets operations (read, write, format, filter, manage spreadsheets) via Rube MCP (Composio). Read\u002Fwrite data, manage tabs, apply formatting, and search rows programmatically.","javiertarazon\u002Fide-agente-free-jt7-","javiertarazon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F153141207?v=4","01M71R52TB3S9HXKH6WSNT8A7V","01M71R52VG5KS2DKDDH4GDQ30A",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fgooglesheets-automation\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"googlesheets automation","automation","data","google","spreadsheets","write","format","read","tabs","operations","via","filter","apply","unknown","MCP","sheets","search","manage","google sheets","community","2026-11-10 13:02:02",false,"---\nname: googlesheets-automation\ndescription: \"Automate Google Sheets operations (read, write, format, filter, manage spreadsheets) via Rube MCP (Composio). Read\u002Fwrite data, manage tabs, apply formatting, and search rows programmatically.\"\nrequires:\n  mcp: [rube]\nrisk: unknown\nsource: community\n---\n\n# Google Sheets Automation via Rube MCP\n\nAutomate Google Sheets workflows including reading\u002Fwriting data, managing spreadsheets and tabs, formatting cells, filtering rows, and upserting records through Composio's Google Sheets toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Google Sheets connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlesheets`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googlesheets`\n3. If connection is not ACTIVE, follow the returned auth link to complete Google OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Read and Write Data\n\n**When to use**: User wants to read data from or write data to a Google Sheet\n\n**Tool sequence**:\n1. `GOOGLESHEETS_SEARCH_SPREADSHEETS` - Find spreadsheet by name if ID unknown [Prerequisite]\n2. `GOOGLESHEETS_GET_SHEET_NAMES` - Enumerate tab names to target the right sheet [Prerequisite]\n3. `GOOGLESHEETS_BATCH_GET` - Read data from one or more ranges [Required]\n4. `GOOGLESHEETS_BATCH_UPDATE` - Write data to a range or append rows [Required]\n5. `GOOGLESHEETS_VALUES_UPDATE` - Update a single specific range [Alternative]\n6. `GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND` - Append rows to end of table [Alternative]\n\n**Key parameters**:\n- `spreadsheet_id`: Alphanumeric ID from the spreadsheet URL (between '\u002Fd\u002F' and '\u002Fedit')\n- `ranges`: A1 notation array (e.g., 'Sheet1!A1:Z1000'); always use bounded ranges\n- `sheet_name`: Tab name (case-insensitive matching supported)\n- `values`: 2D array where each inner array is a row\n- `first_cell_location`: Starting cell in A1 notation (omit to append)\n- `valueInputOption`: 'USER_ENTERED' (parsed) or 'RAW' (literal)\n\n**Pitfalls**:\n- Mis-cased or non-existent tab names error \"Sheet 'X' not found\"\n- Empty ranges may omit `valueRanges[i].values`; treat missing as empty array\n- `GOOGLESHEETS_BATCH_UPDATE` values must be a 2D array (list of lists), even for a single row\n- Unbounded ranges like 'A:Z' on sheets with >10,000 rows may cause timeouts; always bound with row limits\n- Append follows the detected `tableRange`; use returned `updatedRange` to verify placement\n\n### 2. Create and Manage Spreadsheets\n\n**When to use**: User wants to create a new spreadsheet or manage tabs within one\n\n**Tool sequence**:\n1. `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` - Create a new spreadsheet [Required]\n2. `GOOGLESHEETS_ADD_SHEET` - Add a new tab\u002Fworksheet [Required]\n3. `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` - Rename, hide, reorder, or color tabs [Optional]\n4. `GOOGLESHEETS_GET_SPREADSHEET_INFO` - Get full spreadsheet metadata [Optional]\n5. `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE` - Check if a specific tab exists [Optional]\n\n**Key parameters**:\n- `title`: Spreadsheet or sheet tab name\n- `spreadsheetId`: Target spreadsheet ID\n- `forceUnique`: Auto-append suffix if tab name exists (default true)\n- `properties.gridProperties`: Set row\u002Fcolumn counts, frozen rows\n\n**Pitfalls**:\n- Sheet names must be unique within a spreadsheet\n- Default sheet names are locale-dependent ('Sheet1' in English, 'Hoja 1' in Spanish)\n- Don't use `index` when creating multiple sheets in parallel (causes 'index too high' errors)\n- `GOOGLESHEETS_GET_SPREADSHEET_INFO` can return 403 if account lacks access\n\n### 3. Search and Filter Rows\n\n**When to use**: User wants to find specific rows or apply filters to sheet data\n\n**Tool sequence**:\n1. `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` - Find first row matching exact cell value [Required]\n2. `GOOGLESHEETS_SET_BASIC_FILTER` - Apply filter\u002Fsort to a range [Alternative]\n3. `GOOGLESHEETS_CLEAR_BASIC_FILTER` - Remove existing filter [Optional]\n4. `GOOGLESHEETS_BATCH_GET` - Read filtered results [Optional]\n\n**Key parameters**:\n- `query`: Exact text value to match (matches entire cell content)\n- `range`: A1 notation range to search within\n- `case_sensitive`: Boolean for case-sensitive matching (default false)\n- `filter.range`: Grid range with sheet_id for basic filter\n- `filter.criteria`: Column-based filter conditions\n- `filter.sortSpecs`: Sort specifications\n\n**Pitfalls**:\n- `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` matches entire cell content, not substrings\n- Sheet names with spaces must be single-quoted in ranges (e.g., \"'My Sheet'!A:Z\")\n- Bare sheet names without ranges are not supported for lookup; always specify a range\n\n### 4. Upsert Rows by Key\n\n**When to use**: User wants to update existing rows or insert new ones based on a unique key column\n\n**Tool sequence**:\n1. `GOOGLESHEETS_UPSERT_ROWS` - Update matching rows or append new ones [Required]\n\n**Key parameters**:\n- `spreadsheetId`: Target spreadsheet ID\n- `sheetName`: Tab name\n- `keyColumn`: Column header name used as unique identifier (e.g., 'Email', 'SKU')\n- `headers`: List of column names for the data\n- `rows`: 2D array of data rows\n- `strictMode`: Error on mismatched column counts (default true)\n\n**Pitfalls**:\n- `keyColumn` must be an actual header name, NOT a column letter (e.g., 'Email' not 'A')\n- If `headers` is NOT provided, first row of `rows` is treated as headers\n- With `strictMode=true`, rows with more values than headers cause an error\n- Auto-adds missing columns to the sheet\n\n### 5. Format Cells\n\n**When to use**: User wants to apply formatting (bold, colors, font size) to cells\n\n**Tool sequence**:\n1. `GOOGLESHEETS_GET_SPREADSHEET_INFO` - Get numeric sheetId for target tab [Prerequisite]\n2. `GOOGLESHEETS_FORMAT_CELL` - Apply formatting to a range [Required]\n3. `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` - Change frozen rows, column widths [Optional]\n\n**Key parameters**:\n- `spreadsheet_id`: Spreadsheet ID\n- `worksheet_id`: Numeric sheetId (NOT tab name); get from GET_SPREADSHEET_INFO\n- `range`: A1 notation (e.g., 'A1:F1') - preferred over index fields\n- `bold`, `italic`, `underline`, `strikethrough`: Boolean formatting options\n- `red`, `green`, `blue`: Background color as 0.0-1.0 floats (NOT 0-255 ints)\n- `fontSize`: Font size in points\n\n**Pitfalls**:\n- Requires numeric `worksheet_id`, not tab title; get from spreadsheet metadata\n- Color channels are 0-1 floats (e.g., 1.0 for full red), NOT 0-255 integers\n- Responses may return empty reply objects ([{}]); verify formatting via readback\n- Format one range per call; batch formatting requires separate calls\n\n## Common Patterns\n\n### ID Resolution\n- **Spreadsheet name -> ID**: `GOOGLESHEETS_SEARCH_SPREADSHEETS` with `query`\n- **Tab name -> sheetId**: `GOOGLESHEETS_GET_SPREADSHEET_INFO`, extract from sheets metadata\n- **Tab existence check**: `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE`\n\n### Rate Limits\nGoogle Sheets enforces strict rate limits:\n- Max 60 reads\u002Fminute and 60 writes\u002Fminute\n- Exceeding limits causes errors; batch operations where possible\n- Use `GOOGLESHEETS_BATCH_GET` and `GOOGLESHEETS_BATCH_UPDATE` for efficiency\n\n### Data Patterns\n- Always read before writing to understand existing layout\n- Use `GOOGLESHEETS_UPSERT_ROWS` for CRM syncs, inventory updates, and dedup scenarios\n- Append mode (omit `first_cell_location`) is safest for adding new records\n- Use `GOOGLESHEETS_CLEAR_VALUES` to clear content while preserving formatting\n\n## Known Pitfalls\n\n- **Tab names**: Locale-dependent defaults; 'Sheet1' may not exist in non-English accounts\n- **Range notation**: Sheet names with spaces need single quotes in A1 notation\n- **Unbounded ranges**: Can timeout on large sheets; always specify row bounds (e.g., 'A1:Z10000')\n- **2D arrays**: All value parameters must be list-of-lists, even for single rows\n- **Color values**: Floats 0.0-1.0, not integers 0-255\n- **Formatting IDs**: `FORMAT_CELL` needs numeric sheetId, not tab title\n- **Rate limits**: 60 reads\u002Fmin and 60 writes\u002Fmin; batch to stay within limits\n- **Delete dimension**: `GOOGLESHEETS_DELETE_DIMENSION` is irreversible; double-check bounds\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Search spreadsheets | `GOOGLESHEETS_SEARCH_SPREADSHEETS` | `query`, `search_type` |\n| Create spreadsheet | `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` | `title` |\n| List tabs | `GOOGLESHEETS_GET_SHEET_NAMES` | `spreadsheet_id` |\n| Add tab | `GOOGLESHEETS_ADD_SHEET` | `spreadsheetId`, `title` |\n| Read data | `GOOGLESHEETS_BATCH_GET` | `spreadsheet_id`, `ranges` |\n| Read single range | `GOOGLESHEETS_VALUES_GET` | `spreadsheet_id`, `range` |\n| Write data | `GOOGLESHEETS_BATCH_UPDATE` | `spreadsheet_id`, `sheet_name`, `values` |\n| Update range | `GOOGLESHEETS_VALUES_UPDATE` | `spreadsheet_id`, `range`, `values` |\n| Append rows | `GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND` | `spreadsheetId`, `range`, `values` |\n| Upsert rows | `GOOGLESHEETS_UPSERT_ROWS` | `spreadsheetId`, `sheetName`, `keyColumn`, `rows` |\n| Lookup row | `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` | `spreadsheet_id`, `query` |\n| Format cells | `GOOGLESHEETS_FORMAT_CELL` | `spreadsheet_id`, `worksheet_id`, `range` |\n| Set filter | `GOOGLESHEETS_SET_BASIC_FILTER` | `spreadsheetId`, `filter` |\n| Clear values | `GOOGLESHEETS_CLEAR_VALUES` | `spreadsheet_id`, range |\n| Delete rows\u002Fcols | `GOOGLESHEETS_DELETE_DIMENSION` | `spreadsheet_id`, `sheet_name`, dimension |\n| Spreadsheet info | `GOOGLESHEETS_GET_SPREADSHEET_INFO` | `spreadsheet_id` |\n| Update tab props | `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` | `spreadsheetId`, properties |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Google Sheets Automation via Rube MCP\n\nAutomate Google Sheets workflows including reading\u002Fwriting data, managing spreadsheets and tabs, formatting cells, filtering rows, and upserting records through Composio's Google Sheets toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Google Sheets connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `googlesheets`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `googlesheets`\n3. If connection is not ACTIVE, follow the returned auth link to complete Google OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Read and Write Data\n\n**When to use**: User wants to read data from or write data to a Google Sheet\n\n**Tool sequence**:\n1. `GOOGLESHEETS_SEARCH_SPREADSHEETS` - Find spreadsheet by name if ID unknown [Prerequisite]\n2. `GOOGLESHEETS_GET_SHEET_NAMES` - Enumerate tab names to target the right sheet [Prerequisite]\n3. `GOOGLESHEETS_BATCH_GET` - Read data from one or more ranges [Required]\n4. `GOOGLESHEETS_BATCH_UPDATE` - Write data to a range or append rows [Required]\n5. `GOOGLESHEETS_VALUES_UPDATE` - Update a single specific range [Alternative]\n6. `GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND` - Append rows to end of table [Alternative]\n\n**Key parameters**:\n- `spreadsheet_id`: Alphanumeric ID from the spreadsheet URL (between '\u002Fd\u002F' and '\u002Fedit')\n- `ranges`: A1 notation array (e.g., 'Sheet1!A1:Z1000'); always use bounded ranges\n- `sheet_name`: Tab name (case-insensitive matching supported)\n- `values`: 2D array where each inner array is a row\n- `first_cell_location`: Starting cell in A1 notation (omit to append)\n- `valueInputOption`: 'USER_ENTERED' (parsed) or 'RAW' (literal)\n\n**Pitfalls**:\n- Mis-cased or non-existent tab names error \"Sheet 'X' not found\"\n- Empty ranges may omit `valueRanges[i].values`; treat missing as empty array\n- `GOOGLESHEETS_BATCH_UPDATE` values must be a 2D array (list of lists), even for a single row\n- Unbounded ranges like 'A:Z' on sheets with >10,000 rows may cause timeouts; always bound with row limits\n- Append follows the detected `tableRange`; use returned `updatedRange` to verify placement\n\n### 2. Create and Manage Spreadsheets\n\n**When to use**: User wants to create a new spreadsheet or manage tabs within one\n\n**Tool sequence**:\n1. `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` - Create a new spreadsheet [Required]\n2. `GOOGLESHEETS_ADD_SHEET` - Add a new tab\u002Fworksheet [Required]\n3. `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` - Rename, hide, reorder, or color tabs [Optional]\n4. `GOOGLESHEETS_GET_SPREADSHEET_INFO` - Get full spreadsheet metadata [Optional]\n5. `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE` - Check if a specific tab exists [Optional]\n\n**Key parameters**:\n- `title`: Spreadsheet or sheet tab name\n- `spreadsheetId`: Target spreadsheet ID\n- `forceUnique`: Auto-append suffix if tab name exists (default true)\n- `properties.gridProperties`: Set row\u002Fcolumn counts, frozen rows\n\n**Pitfalls**:\n- Sheet names must be unique within a spreadsheet\n- Default sheet names are locale-dependent ('Sheet1' in English, 'Hoja 1' in Spanish)\n- Don't use `index` when creating multiple sheets in parallel (causes 'index too high' errors)\n- `GOOGLESHEETS_GET_SPREADSHEET_INFO` can return 403 if account lacks access\n\n### 3. Search and Filter Rows\n\n**When to use**: User wants to find specific rows or apply filters to sheet data\n\n**Tool sequence**:\n1. `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` - Find first row matching exact cell value [Required]\n2. `GOOGLESHEETS_SET_BASIC_FILTER` - Apply filter\u002Fsort to a range [Alternative]\n3. `GOOGLESHEETS_CLEAR_BASIC_FILTER` - Remove existing filter [Optional]\n4. `GOOGLESHEETS_BATCH_GET` - Read filtered results [Optional]\n\n**Key parameters**:\n- `query`: Exact text value to match (matches entire cell content)\n- `range`: A1 notation range to search within\n- `case_sensitive`: Boolean for case-sensitive matching (default false)\n- `filter.range`: Grid range with sheet_id for basic filter\n- `filter.criteria`: Column-based filter conditions\n- `filter.sortSpecs`: Sort specifications\n\n**Pitfalls**:\n- `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` matches entire cell content, not substrings\n- Sheet names with spaces must be single-quoted in ranges (e.g., \"'My Sheet'!A:Z\")\n- Bare sheet names without ranges are not supported for lookup; always specify a range\n\n### 4. Upsert Rows by Key\n\n**When to use**: User wants to update existing rows or insert new ones based on a unique key column\n\n**Tool sequence**:\n1. `GOOGLESHEETS_UPSERT_ROWS` - Update matching rows or append new ones [Required]\n\n**Key parameters**:\n- `spreadsheetId`: Target spreadsheet ID\n- `sheetName`: Tab name\n- `keyColumn`: Column header name used as unique identifier (e.g., 'Email', 'SKU')\n- `headers`: List of column names for the data\n- `rows`: 2D array of data rows\n- `strictMode`: Error on mismatched column counts (default true)\n\n**Pitfalls**:\n- `keyColumn` must be an actual header name, NOT a column letter (e.g., 'Email' not 'A')\n- If `headers` is NOT provided, first row of `rows` is treated as headers\n- With `strictMode=true`, rows with more values than headers cause an error\n- Auto-adds missing columns to the sheet\n\n### 5. Format Cells\n\n**When to use**: User wants to apply formatting (bold, colors, font size) to cells\n\n**Tool sequence**:\n1. `GOOGLESHEETS_GET_SPREADSHEET_INFO` - Get numeric sheetId for target tab [Prerequisite]\n2. `GOOGLESHEETS_FORMAT_CELL` - Apply formatting to a range [Required]\n3. `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` - Change frozen rows, column widths [Optional]\n\n**Key parameters**:\n- `spreadsheet_id`: Spreadsheet ID\n- `worksheet_id`: Numeric sheetId (NOT tab name); get from GET_SPREADSHEET_INFO\n- `range`: A1 notation (e.g., 'A1:F1') - preferred over index fields\n- `bold`, `italic`, `underline`, `strikethrough`: Boolean formatting options\n- `red`, `green`, `blue`: Background color as 0.0-1.0 floats (NOT 0-255 ints)\n- `fontSize`: Font size in points\n\n**Pitfalls**:\n- Requires numeric `worksheet_id`, not tab title; get from spreadsheet metadata\n- Color channels are 0-1 floats (e.g., 1.0 for full red), NOT 0-255 integers\n- Responses may return empty reply objects ([{}]); verify formatting via readback\n- Format one range per call; batch formatting requires separate calls\n\n## Common Patterns\n\n### ID Resolution\n- **Spreadsheet name -> ID**: `GOOGLESHEETS_SEARCH_SPREADSHEETS` with `query`\n- **Tab name -> sheetId**: `GOOGLESHEETS_GET_SPREADSHEET_INFO`, extract from sheets metadata\n- **Tab existence check**: `GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE`\n\n### Rate Limits\nGoogle Sheets enforces strict rate limits:\n- Max 60 reads\u002Fminute and 60 writes\u002Fminute\n- Exceeding limits causes errors; batch operations where possible\n- Use `GOOGLESHEETS_BATCH_GET` and `GOOGLESHEETS_BATCH_UPDATE` for efficiency\n\n### Data Patterns\n- Always read before writing to understand existing layout\n- Use `GOOGLESHEETS_UPSERT_ROWS` for CRM syncs, inventory updates, and dedup scenarios\n- Append mode (omit `first_cell_location`) is safest for adding new records\n- Use `GOOGLESHEETS_CLEAR_VALUES` to clear content while preserving formatting\n\n## Known Pitfalls\n\n- **Tab names**: Locale-dependent defaults; 'Sheet1' may not exist in non-English accounts\n- **Range notation**: Sheet names with spaces need single quotes in A1 notation\n- **Unbounded ranges**: Can timeout on large sheets; always specify row bounds (e.g., 'A1:Z10000')\n- **2D arrays**: All value parameters must be list-of-lists, even for single rows\n- **Color values**: Floats 0.0-1.0, not integers 0-255\n- **Formatting IDs**: `FORMAT_CELL` needs numeric sheetId, not tab title\n- **Rate limits**: 60 reads\u002Fmin and 60 writes\u002Fmin; batch to stay within limits\n- **Delete dimension**: `GOOGLESHEETS_DELETE_DIMENSION` is irreversible; double-check bounds\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Search spreadsheets | `GOOGLESHEETS_SEARCH_SPREADSHEETS` | `query`, `search_type` |\n| Create spreadsheet | `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` | `title` |\n| List tabs | `GOOGLESHEETS_GET_SHEET_NAMES` | `spreadsheet_id` |\n| Add tab | `GOOGLESHEETS_ADD_SHEET` | `spreadsheetId`, `title` |\n| Read data | `GOOGLESHEETS_BATCH_GET` | `spreadsheet_id`, `ranges` |\n| Read single range | `GOOGLESHEETS_VALUES_GET` | `spreadsheet_id`, `range` |\n| Write data | `GOOGLESHEETS_BATCH_UPDATE` | `spreadsheet_id`, `sheet_name`, `values` |\n| Update range | `GOOGLESHEETS_VALUES_UPDATE` | `spreadsheet_id`, `range`, `values` |\n| Append rows | `GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND` | `spreadsheetId`, `range`, `values` |\n| Upsert rows | `GOOGLESHEETS_UPSERT_ROWS` | `spreadsheetId`, `sheetName`, `keyColumn`, `rows` |\n| Lookup row | `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` | `spreadsheet_id`, `query` |\n| Format cells | `GOOGLESHEETS_FORMAT_CELL` | `spreadsheet_id`, `worksheet_id`, `range` |\n| Set filter | `GOOGLESHEETS_SET_BASIC_FILTER` | `spreadsheetId`, `filter` |\n| Clear values | `GOOGLESHEETS_CLEAR_VALUES` | `spreadsheet_id`, range |\n| Delete rows\u002Fcols | `GOOGLESHEETS_DELETE_DIMENSION` | `spreadsheet_id`, `sheet_name`, dimension |\n| Spreadsheet info | `GOOGLESHEETS_GET_SPREADSHEET_INFO` | `spreadsheet_id` |\n| Update tab props | `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` | `spreadsheetId`, properties |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":36,"source":42,"requires":48,"description":7},{"mcp":49},[50],"rube","release\u002Fv4.2.11-panel-pro","a92ea02bcf7e2b3dbaf46d49696c29a3cb490d4f",".github\u002Fskills\u002Fgooglesheets-automation","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-","https:\u002F\u002Fgithub.com\u002Fjaviertarazon","2026-07-12 07:10:45",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add javiertarazon\u002Fide-agente-free-jt7- --skill googlesheets-automation",{"tool":63,"command":64},"bunx","bunx skills add javiertarazon\u002Fide-agente-free-jt7- --skill googlesheets-automation",{"tool":66,"command":67},"pnpm","pnpm dlx skills add javiertarazon\u002Fide-agente-free-jt7- --skill googlesheets-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fgooglesheets-automation\u002FSKILL.md",true,[],[72,100,121,140,155,177],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":43},"01M71TQ7Q6Z10VWF3C2H5X1KW9","zustand-store-ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reacti...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzustand-store-ts\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[82,83,84,42,85,86,87,88,89,36,90,91,92,93,94,95,96,97,98,99],"zustand","store","zustand store ts","middleware","implementing","use","react state management","when","react","with","state","create","state management","typescript","action","management","separation","global",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":43},"01M71TQ5EAR40G6W0MV5ZDVEZT","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoom-automation\u002FSKILL.md",[106],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[108,109,24,42,110,111,39,112,37,36,113,33,114,115,116,117,118,119,97,120],"zoom automation","zoom","creation","for","schemas","first","meeting","search tools","tracking","webinars","composio","recordings","Tools",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":43},"01M71TQ29B1EYBCEAP1ZBGXQ1A","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoho-crm-automation\u002FSKILL.md",[127],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[129,130,24,131,132,133,42,134,135,111,40,39,112,136,37,36,137,138,139,93],"crm automation","zoho crm automation","crm","zoho crm","zoho","leads","manage leads","records","convert","tasks","contacts",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":43},"01M71TPZPMN60DH0XV58KVHY23","zendesk-automation","Automate Zendesk tasks via Rube MCP (Composio): tickets, users, organizations, replies. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzendesk-automation\u002FSKILL.md",[146],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[148,24,149,42,111,39,112,37,150,36,138,151,152,113,33,153,115,118,120,154],"zendesk automation","zendesk","organizations","replies","users","tickets","automate",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":43},"01M71TPXDWKHKG4N6TVEPXWD0N","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity ...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzapier-make-patterns\u002FSKILL.md",[],[162,163,164,165,166,167,168,169,170,24,171,36,172,173,174,175,176,154],"zapier make patterns","zapier","patterns","make","No-Code","complexity","writing","spawner","business","workflow","code","integromat","apache","processes","but",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":186,"publishedAt":43},"01M71TPT5T10WXNKW9G7ZXZ27W","youtube-summarizer","Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fyoutube-summarizer\u002FSKILL.md",[183],{"categoryNo":184,"categoryName":185,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[187,188,189,190,42,191,192,193,194,195,196,197,172,198,199,200,201,202,203,204],"summarizer","youtube","youtube summarizer","Video","content-analysis","frameworks","copilot","2025","github-copilot","extract transcripts","analysis","codex","cli","summaries","github","generate","summarization","2026"]