gemini-cli-extensions / gemini-cli-extensions/workspace
Feature request: docs.insertTable, sheets.getRanges, and slides.replaceImage
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 638
- Forks
- 107
- PR merge metrics
- No merged PRs in 30d
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing service-class and feature-group patterns behind docs.write, sheets.read, and slides.write, then inspect the proposed Google Workspace API wrappers. Done means adding docs.insertTable, sheets.getRanges, and slides.replaceImage without new OAuth scopes, with Jest coverage for each; the issue notes that a working implementation already exists.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100