gemini-cli-extensions / gemini-cli-extensions/workspace

Feature request: docs.insertTable, sheets.getRanges, and slides.replaceImage

Open
#395 0 comments 0 reactions 0 assignees View on GitHub

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:

  1. 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.

  2. 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.

  3. 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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.