Excel Automation

Excel Automation: create workbooks, manage worksheets, read/write cell data, and format spreadsheets via Microsoft Excel and Google Sheets integration

Install

Hot:1

Download and extract to your skills directory

Copy command and send to OpenClaw for auto-install:

Download and install this skill https://openskills.cc/api/download?slug=composiohq-composio-skills-excel-automation&locale=en&source=copy
name:Excel Automationdescription:"Excel Automation: create workbooks, manage worksheets, read/write cell data, and format spreadsheets via Microsoft Excel and Google Sheets integration"requires:mcp:[rube]

Excel Automation

Automate spreadsheet operations including creating workbooks, writing data, formatting cells, upserting rows, and managing worksheets. Works with Microsoft Excel (OneDrive) and Google Sheets.

Toolkit docs: composio.dev/toolkits/excel


Setup

This skill requires the Rube MCP server connected at https://rube.app/mcp.

Before executing any tools, ensure an active connection exists for the excel (and optionally googlesheets) toolkit. If no connection is active, initiate one via RUBE_MANAGE_CONNECTIONS.


Core Workflows

1. Create a New Excel Workbook

Use EXCEL_CREATE_WORKBOOK to generate a new .xlsx file and upload it to OneDrive.

Tool: EXCEL_CREATE_WORKBOOK

Steps:

  • Call EXCEL_CREATE_WORKBOOK with worksheet names and data

  • The tool creates a .xlsx file and uploads it to OneDrive

  • Use the returned file path/URL for subsequent operations

  • 2. Write Data to a Spreadsheet

    Use GOOGLESHEETS_BATCH_UPDATE to write values to a specific range or append rows.

    Tool: GOOGLESHEETS_BATCH_UPDATE

    Key Parameters:

  • spreadsheet_id (required) -- The spreadsheet ID from the URL (44-char alphanumeric string)

  • sheet_name (required) -- Tab name, e.g., "Sheet1", "Sales Data"

  • values (required) -- 2D array of cell values, e.g., [["Name","Amount"],["Alice",100]]

  • first_cell_location -- Starting cell in A1 notation (e.g., "A1", "D3"). Omit to append rows

  • valueInputOption -- "USER_ENTERED" (default, parses formulas) or "RAW" (stores as-is)
  • Example:

    Tool: GOOGLESHEETS_BATCH_UPDATE
    Arguments:
      spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      sheet_name: "Sheet1"
      values: [["Item","Cost","Stocked"],["Wheel",20.50,true],["Screw",0.50,true]]
      first_cell_location: "A1"


    3. Upsert Rows by Key Column

    Use GOOGLESHEETS_UPSERT_ROWS to update existing rows by matching a key column, or append new rows if no match is found. Ideal for CRM syncs, inventory updates, and deduplication.

    Tool: GOOGLESHEETS_UPSERT_ROWS

    Key Parameters:

  • spreadsheetId (required) -- The spreadsheet ID

  • sheetName (required) -- Tab name

  • rows (required) -- 2D array of data rows (min 1 row). If headers is omitted, the first row is treated as headers

  • headers -- Column names for the data, e.g., ["Email","Phone","Status"]

  • keyColumn -- Column header to match on, e.g., "Email", "SKU", "Lead ID"

  • strictMode -- true (default) errors on mismatched columns; false truncates silently
  • Example:

    Tool: GOOGLESHEETS_UPSERT_ROWS
    Arguments:
      spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      sheetName: "Contacts"
      keyColumn: "Email"
      headers: ["Email","Phone","Status"]
      rows: [["john@example.com","555-0101","Active"],["jane@example.com","555-0102","Pending"]]


    4. Format Cells

    Use GOOGLESHEETS_FORMAT_CELL to apply bold, italic, font size, and background colors to ranges.

    Tool: GOOGLESHEETS_FORMAT_CELL

    Key Parameters:

  • spreadsheet_id (required) -- The spreadsheet ID

  • range -- Cell range in A1 notation, e.g., "A1:D1", "B2:B10" (recommended over index-based)

  • sheet_name -- Worksheet name, e.g., "Sheet1"

  • bold -- true/false

  • italic -- true/false

  • fontSize -- Font size in points, e.g., 12

  • red, green, blue -- Background color components (0.0--1.0 float scale, NOT 0--255)
  • Example (bold header row with blue background):

    Tool: GOOGLESHEETS_FORMAT_CELL
    Arguments:
      spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      range: "A1:D1"
      sheet_name: "Sheet1"
      bold: true
      fontSize: 12
      red: 0.2
      green: 0.4
      blue: 0.9


    5. Add New Worksheet Tabs

    Use GOOGLESHEETS_ADD_SHEET to create new tabs within an existing spreadsheet.

    Tool: GOOGLESHEETS_ADD_SHEET

    Key Parameters:

  • spreadsheetId (required) -- The spreadsheet ID

  • title -- Name for the new tab, e.g., "Q4 Report"

  • forceUnique -- true (default) auto-appends suffix if name exists
  • Example:

    Tool: GOOGLESHEETS_ADD_SHEET
    Arguments:
      spreadsheetId: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      title: "Q4 Report"
      forceUnique: true


    6. Read Data and Verify Content

    Use GOOGLESHEETS_BATCH_GET to retrieve data from specified cell ranges for validation or further processing.

    Tool: GOOGLESHEETS_BATCH_GET

    Steps:

  • Call GOOGLESHEETS_BATCH_GET with the spreadsheet ID and target ranges

  • Validate headers and data alignment

  • Use results to inform subsequent write or update operations
  • Supporting Tools:

  • GOOGLESHEETS_GET_SHEET_NAMES -- List all tab names in a spreadsheet

  • GOOGLESHEETS_GET_SPREADSHEET_INFO -- Get metadata (sheet IDs, properties)

  • GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE -- Check if a specific tab exists

  • Recommended Execution Plan

  • Create or locate the spreadsheet using GOOGLESHEETS_CREATE_GOOGLE_SHEET1 or reuse an existing spreadsheetId

  • Confirm the destination tab using GOOGLESHEETS_GET_SHEET_NAMES or GOOGLESHEETS_FIND_WORKSHEET_BY_TITLE; create it with GOOGLESHEETS_ADD_SHEET if missing

  • Read existing headers (optional) using GOOGLESHEETS_BATCH_GET to align columns

  • Write or upsert data using GOOGLESHEETS_BATCH_UPDATE or GOOGLESHEETS_UPSERT_ROWS

  • Apply formatting (optional) using GOOGLESHEETS_FORMAT_CELL

  • Verify results (optional) using GOOGLESHEETS_BATCH_GET

  • Fallback: If Google Sheets creation is blocked (HTTP 403), use EXCEL_CREATE_WORKBOOK for local .xlsx output

  • Known Pitfalls

    PitfallDetail
    HTTP 403 on sheet creationGOOGLESHEETS_CREATE_GOOGLE_SHEET1 fails when Drive create scope is missing. Reuse an existing spreadsheetId or fall back to EXCEL_CREATE_WORKBOOK.
    Cell limit and rate throttlingGoogle Sheets has a ~5,000,000 cell limit per spreadsheet. Excessive write frequency triggers HTTP 429. Batch changes and chunk large writes (~500 rows/call).
    Format range off-by-oneGOOGLESHEETS_FORMAT_CELL uses 0-based, endIndex-exclusive ranges when using index mode. Background color uses 0--1 float RGB, NOT 0--255 integer RGB.
    Sheet title uniquenessSheet titles are not guaranteed unique across API responses. Prefer operating by numeric sheetId and verify the resolved tab before writing.
    Upsert payload shapeGOOGLESHEETS_UPSERT_ROWS requires headers + 2D rows array. Sending list-of-dicts or empty rows causes validation errors. Ensure at least 1 data row.


    Quick Reference

    Tool SlugDescription
    EXCEL_CREATE_WORKBOOKCreate a new .xlsx workbook and upload to OneDrive
    GOOGLESHEETS_BATCH_UPDATEWrite values to a range or append new rows
    GOOGLESHEETS_UPSERT_ROWSUpdate existing rows by key or append new ones
    GOOGLESHEETS_FORMAT_CELLApply text/background formatting to cell ranges
    GOOGLESHEETS_ADD_SHEETAdd a new worksheet tab to a spreadsheet
    GOOGLESHEETS_CREATE_GOOGLE_SHEET1Create a new Google Spreadsheet in Drive
    GOOGLESHEETS_GET_SHEET_NAMESList all worksheet names in a spreadsheet
    GOOGLESHEETS_GET_SPREADSHEET_INFORetrieve spreadsheet metadata
    GOOGLESHEETS_FIND_WORKSHEET_BY_TITLECheck if a worksheet exists by title
    GOOGLESHEETS_BATCH_GETRead data from specified cell ranges


    Powered by Composio