Skip to content

feat(sheets): expose spreadsheets.batchUpdate for formatting and structural edits #450

Open

Description

@tmack8001

What happened

The sheets service exposes only read tools (getText, getRange, getMetadata). There is no tool to apply any formatting or structural edit to a spreadsheet — bold, colors, number formats, borders, column widths, text wrapping, frozen rows, conditional formatting, merges, or sheet properties.

Grounded in the source: the sheets.write feature group in feature-config.ts is empty (tools: []) and defaultEnabled: false, so no write tool is registered. The underlying Google spreadsheets.batchUpdate endpoint is only called internally (to build addSheet/deleteSheet requests); it is not surfaced as a tool. Any attempt to apply formatting via batchUpdate therefore has no MCP tool to route to.

This is distinct from #291 (Sheets write/create support), which covered value/structure write operations. Formatting is a separate, still-missing primitive.

What I expected

A tool that exposes spreadsheets.batchUpdate so formatting and structural edits can be applied — matching the precedent of slides.updateShapeProperties, which takes a JSON request string plus a field mask.

Proposed scope

  • Add SheetsService.batchUpdate (accepts a requests JSON string, validates Request[], calls spreadsheets.batchUpdate).
  • Register it as a write tool in index.ts and add it to the sheets.write group in feature-config.ts, flipping the group defaultEnabled: true consistent with the other write groups.
  • Coupled test updates for the two tests that encoded the old sheets.write = OFF default, plus new batchUpdate coverage.

A fix is in flight.

Activity

  1. tmack8001 commented on Oct 28, 2026

    @tmack8001
    Author

    /assign

  2. tmack8001 commented on Oct 28, 2026

    @tmack8001
    Author

    Fix in flight: #449 (from fork tmack8001/workspace). Cross-repo PRs don't auto-close via the keyword, so linking here explicitly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions