You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add `gog sheets batch-update` for multi-range value writes through one Sheets `values.batchUpdate` request.
Maintainer fixups:
- Kept the `sheets batch-update` syntax with `batch` alias to match the Sheets API and existing command naming.
- Resolved current-main changelog/docs conflicts and regenerated command docs.
- Added contributor credit and tightened validation so empty value arrays are rejected.
Proof:
- `go test ./internal/cmd -run 'TestSheetsBatchUpdate|TestSheetsCommands_JSON|TestSheetsCommands_Text|TestSafetyProfile|TestParseSheetsBatchUpdateDataRejectsInvalidPayloads' -count=1`
- `make ci`
- `codex-review --mode branch --parallel-tests "go test ./internal/cmd -run 'TestSheetsBatchUpdate|TestSheetsCommands_JSON|TestSheetsCommands_Text|TestSafetyProfile|TestParseSheetsBatchUpdateDataRejectsInvalidPayloads' -count=1"`
- Live Google Sheets test with `[email protected]`: created disposable spreadsheet `1YGLDGBeD82aTOt-1LtQTWSgA-m69TQlWhqV3MyM5k-U`, ran `sheets batch-update` over `Sheet1!A1:B2` and `Sheet1!D1:E2`, verified readback from `Sheet1!A1:E2` matched the two written ranges with the blank middle column, then trashed the spreadsheet.
- GitHub CI and docker checks green on `420ab406be8750b48dbb21d8109f51fb31c98fda`.
Co-authored-by: Martin Kask <[email protected]>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@
8
8
- Calendar: add --with-zoom / --regenerate-zoom / --remove-zoom that create, regenerate, and remove Zoom meetings and attach the join URL + meeting ID + passcode to the Calendar event description. Google's Calendar API rejects conferenceData writes asserting `conferenceSolution.key.type="addOn"` from non-Workspace-Marketplace OAuth clients, so the description-mode integration is the path that round-trips through Google's storage; trade-off is no native "Join with Zoom" conference card. (#589, #590) — thanks @alexisperumal and @mvanhorn.
9
9
- Auth: add gog zoom auth setup / doctor for Zoom S2S OAuth credential storage. (#590) — thanks @mvanhorn.
10
10
- Drive: add `--action=resolve|reopen` to `drive comments reply` and sibling `drive comments resolve|reopen` verbs (also `docs comments reopen`) to post a reply that atomically flips the parent comment's resolved state via the Drive API's `Reply.action` field. Avoids the previous workaround of `drive comments delete` (which destroys review-thread context) for batch-resolving inline doc-review feedback. (#623) — thanks @sebsnyk.
11
+
- Sheets: add `gog sheets batch-update <spreadsheetId> --data-json ...` for updating multiple value ranges in one Sheets API request. Alias: `batch`. (#601) — thanks @Tsopic.
11
12
- Docs: add `gog docs insert-page-break <docId> [--index N | --at-end] [--tab=STRING]` to insert a Google Docs page break directly via `InsertPageBreakRequest` — markdown has no native page-break construct, so this is the only path for multi-page deliverables. Aliases: `page-break`, `pb`. (#604)
12
13
- Docs: add `gog docs page-layout <docId> [--layout=pageless|pages]` to toggle the page layout of an existing Google Doc via `updateDocumentStyle` on `documentFormat.documentMode`. Sibling to the existing `--pageless` flag on `docs create`/`write`/`update` for the case where the doc was created upstream (e.g. by Drive markdown conversion) without the desired layout. Defaults to `pageless`. Aliases: `set-page-layout`, `page-setup`. (#593)
13
14
- Docs: add `--heading-level N` (1..6 shortcut) and `--named-style NAME` (full enum) to `gog docs format` so existing paragraphs can be promoted to `HEADING_1`..`HEADING_6`, `TITLE`, `SUBTITLE`, or `NORMAL_TEXT`. Both set `paragraphStyle.namedStyleType` on the existing UpdateParagraphStyle request and compose cleanly with `--alignment` / `--line-spacing`. (#605)
-[`gog sheets (sheet) banding (banded-ranges) list <spreadsheetId> [flags]`](commands/gog-sheets-banding-list.md) - List alternating color banded ranges
472
472
-[`gog sheets (sheet) banding (banded-ranges) set (add,create) <spreadsheetId> <range> [flags]`](commands/gog-sheets-banding-set.md) - Apply alternating colors to a range
473
+
-[`gog sheets (sheet) batch-update (batch) --data-json=STRING <spreadsheetId> [flags]`](commands/gog-sheets-batch-update.md) - Update values in multiple ranges with one API request
Copy file name to clipboardExpand all lines: docs/commands/README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Every `gog` command has a generated docs page. The source of truth is the live CLI schema; run `make docs-commands` after changing command names, flags, help text, aliases, or arguments.
4
4
5
-
Generated pages: 571.
5
+
Generated pages: 572.
6
6
7
7
## Top-level Commands
8
8
@@ -521,6 +521,7 @@ Generated pages: 571.
521
521
-[gog sheets banding clear](gog-sheets-banding-clear.md) - Remove alternating color banding
522
522
-[gog sheets banding list](gog-sheets-banding-list.md) - List alternating color banded ranges
523
523
-[gog sheets banding set](gog-sheets-banding-set.md) - Apply alternating colors to a range
524
+
-[gog sheets batch-update](gog-sheets-batch-update.md) - Update values in multiple ranges with one API request
|`--access-token`|`string`|| Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
22
+
|`-a`<br>`--account`<br>`--acct`|`string`|| Account email for API commands (gmail/calendar/chat/classroom/drive/drivelabels/docs/slides/contacts/tasks/people/sheets/forms/sites/appscript/analytics/searchconsole/ads/photos) |
|`-h`<br>`--help`|`kong.helpFlag`|| Show context-sensitive help. |
32
+
|`--include-values-in-response`|`bool`|| Include updated values in the response |
33
+
|`--input`|`string`| USER_ENTERED | Value input option: RAW or USER_ENTERED |
34
+
|`-j`<br>`--json`<br>`--machine`|`bool`| false | Output JSON to stdout (best for scripting) |
35
+
|`--no-input`<br>`--non-interactive`<br>`--noninteractive`|`bool`|| Never prompt; fail instead (useful for CI) |
36
+
|`-p`<br>`--plain`<br>`--tsv`|`bool`| false | Output stable, parseable text to stdout (TSV; no colors) |
37
+
|`--response-date-time-render`|`string`|| Response date/time render option: SERIAL_NUMBER or FORMATTED_STRING |
38
+
|`--response-render`|`string`|| Response value render option: FORMATTED_VALUE, UNFORMATTED_VALUE, or FORMULA |
39
+
|`--results-only`|`bool`|| In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
40
+
|`--select`<br>`--pick`<br>`--project`|`string`|| In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
0 commit comments