Problem
Three recurring agent workflows currently require awkward workarounds:
-
Tables in Docs: there is no table tool. Building a comparison or status table requires the model to fake it with monospaced text. Writing into table cells after the fact via docs.writeText index arithmetic is error-prone because every insertion shifts subsequent indexes.
-
Reading several disjoint ranges in Sheets: dashboards/KPI checks typically need a handful of small ranges across different sheets (e.g. Summary!B2, Q4!F1:F12). Today that is one sheets.getRange call (and one API round trip) per range.
-
Refreshing images in Slides: template decks commonly have chart/image placeholders. slides.addImage can only add new images; replacing an existing one while preserving its position/size (the replaceImage batchUpdate request) is not exposed.
Proposal
docs.insertTable (docs.write): insert a rows x columns table at end-of-body or index, with optional data 2D array filled in the same call (reverse-order insertText so indexes stay valid).
sheets.getRanges (sheets.read, readOnlyHint): thin wrapper over spreadsheets.values.batchGet with valueRenderOption / majorDimension.
slides.replaceImage (slides.write): thin wrapper over the replaceImage request with CENTER_INSIDE / CENTER_CROP.
All three follow the existing service-class + feature-group patterns and add no new OAuth scopes (each reuses its group's existing scope).
I have a working implementation with Jest coverage ready to submit as a PR. Happy to split it per-product if preferred.
Problem
Three recurring agent workflows currently require awkward workarounds:
Tables in Docs: there is no table tool. Building a comparison or status table requires the model to fake it with monospaced text. Writing into table cells after the fact via
docs.writeTextindex arithmetic is error-prone because every insertion shifts subsequent indexes.Reading several disjoint ranges in Sheets: dashboards/KPI checks typically need a handful of small ranges across different sheets (e.g.
Summary!B2,Q4!F1:F12). Today that is onesheets.getRangecall (and one API round trip) per range.Refreshing images in Slides: template decks commonly have chart/image placeholders.
slides.addImagecan only add new images; replacing an existing one while preserving its position/size (thereplaceImagebatchUpdate request) is not exposed.Proposal
docs.insertTable(docs.write): insert a rows x columns table at end-of-body or index, with optionaldata2D array filled in the same call (reverse-order insertText so indexes stay valid).sheets.getRanges(sheets.read,readOnlyHint): thin wrapper overspreadsheets.values.batchGetwithvalueRenderOption/majorDimension.slides.replaceImage(slides.write): thin wrapper over thereplaceImagerequest withCENTER_INSIDE/CENTER_CROP.All three follow the existing service-class + feature-group patterns and add no new OAuth scopes (each reuses its group's existing scope).
I have a working implementation with Jest coverage ready to submit as a PR. Happy to split it per-product if preferred.