Repository navigation
Conversation
…al edits Adds a general-purpose sheets.batchUpdate tool that passes an array of Google Sheets Request objects to spreadsheets.batchUpdate, enabling cell and text formatting (bold, colors, number formats, borders), column widths, wrapping, frozen rows, conditional formatting, merges, and sheet properties -- none of which the values-based tools can express. The sheets.write feature group was previously empty and default-OFF; it now contains sheets.batchUpdate and is default-ON, consistent with the other write groups (docs/drive/calendar/chat). Updates the two tests that asserted the old sheets.write=OFF defaults and adds SheetsService batchUpdate tests (success, invalid-JSON, non-array, API error).
Sum1cares
approved these changes
Oct 25, 2026
Sum1cares
approved these changes
Oct 25, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #450
Summary
Adds a general-purpose
sheets.batchUpdatetool to the Sheets service. This is the missing write primitive for everything beyond cell values: cell and text formatting (bold, colors, number formats, borders), column widths, text wrapping, frozen rows, conditional formatting, merges, and sheet properties.Today the
sheetsservice only exposes read tools (getText,getRange,getMetadata), and thesheets.writefeature group is empty anddefaultEnabled: false. There is no way to apply formatting — the Sheetsspreadsheets.batchUpdateendpoint is only used internally. This PR exposes it as a tool.What changed
SheetsService.batchUpdate— accepts arequestsJSON string, parses and validates it is aRequest[], and callsspreadsheets.batchUpdate. Returns{ spreadsheetId, repliesCount }, mirroring the error/return shape of the existing service methods.index.ts— registerssheets.batchUpdateas a write tool (noreadOnlyToolProps) with a schema that documents the GoogleRequestshape and a worked bold example.feature-config.ts— addssheets.batchUpdateto thesheets.writegroup and setsdefaultEnabled: true, consistent with the other write groups (docs/drive/calendar/chat). Thespreadsheetsscope was already declared on the group.sheets.write= OFF defaults, and addsSheetsService.batchUpdatecoverage (success, invalid-JSON, non-array, API error).Design notes
requestsstring) was chosen over many narrow formatting tools to keep the surface small while covering the whole batchUpdate schema — matching the precedent set byslides.updateShapeProperties, which takes a JSONShapePropertiesstring plus a field mask.extractDocIdis applied so a spreadsheet URL or bare ID both work, as with the other Sheets tools.Testing
Run from the repo root:
All pass locally (625 tests, including 4 new
batchUpdatetests). Lint, format, typecheck, and build are clean.