{ "+workbook-info": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet locator" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet locator" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-create": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "title", "kind": "own", "type": "string", "required": "required", "desc": "New sheet title" }, { "name": "index", "kind": "own", "type": "int", "required": "optional", "desc": "Insert position (0-based); appended to the end when omitted", "default": "-1" }, { "name": "row-count", "kind": "own", "type": "int", "required": "optional", "desc": "Initial row count (default 200, max 50000)", "default": "200" }, { "name": "col-count", "kind": "own", "type": "int", "required": "optional", "desc": "Initial column count (default 20, max 200)", "default": "20" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-delete": { "risk": "high-risk-write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "yes", "kind": "system", "type": "bool", "required": "required", "desc": "Confirm high-risk write (exit code 10 without this flag)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-rename": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "title", "kind": "own", "type": "string", "required": "required", "desc": "New title" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-move": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "index", "kind": "own", "type": "int", "required": "required", "desc": "Target position (0-based)" }, { "name": "source-index", "kind": "own", "type": "int", "required": "optional", "desc": "Source position (0-based); optional. If omitted, the CLI runtime derives it from the current workbook index of `--sheet-id` / `--sheet-name`", "default": "-1" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-copy": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "title", "kind": "own", "type": "string", "required": "optional", "desc": "Copy title; auto-generated by the server when omitted" }, { "name": "index", "kind": "own", "type": "int", "required": "optional", "desc": "Insert position for the copy (0-based); appended to the end when omitted", "default": "-1" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-hide": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-unhide": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-set-tab-color": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "color", "kind": "own", "type": "string", "required": "required", "desc": "Hex color like `#FF0000`; pass empty string `\"\"` to clear" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-hide-gridline": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+sheet-show-gridline": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+workbook-create": { "risk": "write", "flags": [ { "name": "title", "kind": "own", "type": "string", "required": "required", "desc": "Spreadsheet title" }, { "name": "folder-token", "kind": "own", "type": "string", "required": "optional", "desc": "Target folder token; placed at the drive root when omitted" }, { "name": "values", "kind": "own", "type": "string", "required": "optional", "desc": "Untyped initial data as one 2D JSON array (`[[\"alice\",95]]`); values are written as-is with their type auto-detected, through the same batched set_cell_range path as --sheets — pair with --styles for number formats, colors, merges, and row/col sizes", "input": [ "file", "stdin" ] }, { "name": "sheets", "kind": "own", "type": "string", "required": "optional", "desc": "Typed table payload as JSON (same shape as `+table-put`): top-level `{\"sheets\":[...]}`, with each array item a sub-sheet `{name, start_cell?, mode?, header?, allow_overwrite?, columns:[\"colA\",\"colB\",...], data:[[...]], dtypes?:{colA:pandasDtype, ...}, formats?:{colA:numberFormat, ...}}` — `name` and the outer `sheets` envelope are both required. Agents typically use `df_to_sheet(df, name)` from `scripts/sheets_df.py` to pack each DataFrame into one item, then wrap the list in `{\"sheets\":[...]}`. Mutually exclusive with --values. Creates the workbook, then writes typed type-faithful data (dates land as real dates, numbers keep precision).", "input": [ "file", "stdin" ] }, { "name": "styles", "kind": "own", "type": "string", "required": "optional", "desc": "Initial visual operations as JSON: top-level `{styles:[...]}`. Each item corresponds to one target sheet and must include `name`, plus at least one of `cell_styles` / `row_sizes` / `col_sizes` / `cell_merges`. `cell_styles` entries use +cells-set-style fields with a cell range; row/col sizes use dimension ranges plus type/size; merges use cell ranges plus optional merge_type. With --sheets, styles array length/order/name must match --sheets.sheets. With --values, pass exactly one styles item for the initial sheet (its name is ignored).", "input": [ "file", "stdin" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+workbook-export": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "file-extension", "kind": "own", "type": "string", "required": "optional", "desc": "Export file format; `csv` mode requires `--sheet-id`", "default": "xlsx", "enum": [ "xlsx", "csv" ] }, { "name": "sheet-id", "kind": "own", "type": "string", "required": "optional", "desc": "Required only in csv mode: which sheet to export as CSV. This is a `+workbook-export`-specific flag, unrelated to the common four-tuple sheet locator (this shortcut does not accept the common sheet locator)" }, { "name": "output-path", "kind": "own", "type": "string", "required": "optional", "desc": "Local save path. When omitted, **only the export task is triggered + polled, the file is NOT downloaded** (returns file_token / status so a later step can resume the download). Pass a concrete path (e.g. `./out.xlsx`) or a directory (`.` keeps the server-provided filename) to download. Note: the equivalent `lark-cli drive +export --doc-type sheet` uses three separate flags (`--output-dir` / `--file-name` / `--overwrite`) and defaults to downloading into the current directory; this wrapper collapses them into a single `--output-path` for ergonomics but defaults to no-download — fall back to `drive +export` if the split flag set fits better." }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+workbook-import": { "risk": "write", "flags": [ { "name": "file", "kind": "own", "type": "string", "required": "required", "desc": "Local file path (.xlsx / .xls / .csv)" }, { "name": "folder-token", "kind": "own", "type": "string", "required": "optional", "desc": "Target folder token; imported to the cloud drive root when omitted" }, { "name": "name", "kind": "own", "type": "string", "required": "optional", "desc": "Imported spreadsheet name; defaults to the local file name without its extension" } ] }, "+sheet-info": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "include", "kind": "own", "type": "string_slice", "required": "optional", "desc": "Comma-separated structure info categories to return", "enum": [ "merges", "row_heights", "col_widths", "hidden_rows", "hidden_cols", "groups", "frozen" ] }, { "name": "range", "kind": "own", "type": "string", "required": "optional", "desc": "Limit structure info to this A1 range; whole sheet when omitted" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-insert": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "inherit-style", "kind": "own", "type": "string", "required": "optional", "desc": "Style inheritance for the new row/column: `before` (from preceding) / `after` (from following) / `none` (default)", "default": "none", "enum": [ "before", "after", "none" ] }, { "name": "position", "kind": "own", "type": "string", "required": "required", "desc": "Insert position (1-based row number like `3` or column letter like `C`); new rows/columns are inserted *before* this position" }, { "name": "count", "kind": "own", "type": "int", "required": "required", "desc": "Number of rows/columns to insert (must be > 0)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-delete": { "risk": "high-risk-write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row/column closed range to delete; rows use 1-based numbers like `3:7` or `5` (single row), columns use letters like `C:F` or `C`" }, { "name": "yes", "kind": "system", "type": "bool", "required": "required", "desc": "Confirm destructive write (exit code 10 without this flag); row/column deletion is irreversible" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-hide": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row/column closed range to hide; rows use 1-based numbers like `3:7`, columns use letters like `C:F`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-unhide": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row/column closed range to unhide; rows use 1-based numbers like `3:7`, columns use letters like `C:F`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-freeze": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "dimension", "kind": "own", "type": "string", "required": "required", "desc": "Dimension (row or column)", "enum": [ "row", "column" ] }, { "name": "count", "kind": "own", "type": "int", "required": "required", "desc": "Freeze the first N rows/columns; pass 0 to unfreeze" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-group": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "depth", "kind": "own", "type": "int", "required": "optional", "desc": "Nesting level for grouping; default 1", "default": "1" }, { "name": "group-state", "kind": "own", "type": "string", "required": "optional", "desc": "Initial group expand state", "default": "expand", "enum": [ "expand", "fold" ] }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row/column closed range to group; rows use 1-based numbers like `3:7`, columns use letters like `C:F`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-ungroup": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "depth", "kind": "own", "type": "int", "required": "optional", "desc": "Group nesting level to ungroup; default 1 (outermost)", "default": "1" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row/column closed range to ungroup; rows use 1-based numbers like `3:7`, columns use letters like `C:F`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dim-move": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "source-range", "kind": "own", "type": "string", "required": "required", "desc": "Source row/column closed range to move; rows use 1-based numbers like `3:7`, columns use letters like `C:F`" }, { "name": "target", "kind": "own", "type": "string", "required": "required", "desc": "Destination position (the moved rows/columns are placed *before* this position); rows use 1-based row number like `12`, columns use column letter like `H`. Must match the dimension of --source-range" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-get": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "A1 range, e.g. `A1:F10` (no sheet prefix — use `--sheet-id` / `--sheet-name` to select the sheet)" }, { "name": "include", "kind": "own", "type": "string_slice", "required": "optional", "desc": "Comma-separated info categories to include", "enum": [ "value", "formula", "style", "comment", "data_validation" ] }, { "name": "max-chars", "kind": "own", "type": "int", "required": "optional", "desc": "Max output chars per call; default 500000 (safety cap). Large reads are usually better redirected to a file; only lower it (e.g. 25000) when you want results inline without triggering file offload, paging via has_more", "default": "500000" }, { "name": "skip-hidden", "kind": "own", "type": "bool", "required": "optional", "desc": "Skip hidden rows and columns; default `false`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dropdown-get": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Target range in A1 notation, e.g. `A2:A100` (no sheet prefix — use `--sheet-id` / `--sheet-name` to select the sheet)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+csv-get": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "A1 range, e.g. `A1:F30` (no sheet prefix — use `--sheet-id` / `--sheet-name` to select the sheet)" }, { "name": "max-chars", "kind": "own", "type": "int", "required": "optional", "desc": "Max output chars per call; default 500000 (safety cap). Large reads are usually better redirected to a file; only lower it (e.g. 25000) when you want results inline without triggering file offload, paging via has_more", "default": "500000" }, { "name": "include-row-prefix", "kind": "own", "type": "bool", "required": "optional", "desc": "Whether to prefix each row with `[row=N]`; default `true`", "default": "true" }, { "name": "skip-hidden", "kind": "own", "type": "bool", "required": "optional", "desc": "Skip hidden rows and columns; default `false`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "Print the request path and parameters without executing" } ] }, "+table-get": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "own", "type": "string", "required": "optional", "desc": "Read only this sheet (by id); omit to read all sheets" }, { "name": "sheet-name", "kind": "own", "type": "string", "required": "optional", "desc": "Read only this sheet (by name); omit to read all sheets" }, { "name": "range", "kind": "own", "type": "string", "required": "optional", "desc": "A1 range to read; omit to read each sheet's full used range (spans internal blank rows/columns, not just the A1 current region)" }, { "name": "no-header", "kind": "own", "type": "bool", "required": "optional", "desc": "Treat the first row as data instead of a header (columns get positional names col1, col2, ...)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-search": { "risk": "read", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "find", "kind": "own", "type": "string", "required": "required", "desc": "Text to find (interpreted as regex when `--regex` is set)" }, { "name": "range", "kind": "own", "type": "string", "required": "optional", "desc": "Search range (A1 notation); whole sheet when omitted" }, { "name": "match-case", "kind": "own", "type": "bool", "required": "optional", "desc": "Case-sensitive match" }, { "name": "match-entire-cell", "kind": "own", "type": "bool", "required": "optional", "desc": "Match the entire cell content" }, { "name": "regex", "kind": "own", "type": "bool", "required": "optional", "desc": "Interpret `--find` as a regex pattern" }, { "name": "include-formulas", "kind": "own", "type": "bool", "required": "optional", "desc": "Also search within formula text" }, { "name": "max-matches", "kind": "own", "type": "int", "required": "optional", "desc": "Safety cap; default 5000", "default": "5000", "hidden": true }, { "name": "offset", "kind": "own", "type": "int", "required": "optional", "desc": "Skip the first N matches (for pagination); default 0", "default": "0" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-replace": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "find", "kind": "own", "type": "string", "required": "required", "desc": "Text to find for replacement" }, { "name": "replacement", "kind": "own", "type": "string", "required": "required", "desc": "Replacement text; pass empty string `\"\"` to delete matched content" }, { "name": "range", "kind": "own", "type": "string", "required": "optional", "desc": "Replace range (A1 notation); whole sheet when omitted" }, { "name": "match-case", "kind": "own", "type": "bool", "required": "optional", "desc": "Case-sensitive match" }, { "name": "match-entire-cell", "kind": "own", "type": "bool", "required": "optional", "desc": "Match the entire cell content" }, { "name": "regex", "kind": "own", "type": "bool", "required": "optional", "desc": "Interpret `--find` as a regex pattern" }, { "name": "include-formulas", "kind": "own", "type": "bool", "required": "optional", "desc": "Also replace within formula text" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "Required preflight: outputs `would_replace_count` for user confirmation before the actual replace" } ] }, "+cells-set": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Write range (A1 notation)" }, { "name": "cells", "kind": "own", "type": "string", "required": "required", "desc": "JSON 2D array `[[{cell},...],...]`, dimensions must match `--range`; each cell may carry `value` / `formula` / `cell_styles` / `note` / `rich_text` (incl. `type=\"embed-image\"` in-cell image); run `--print-schema` for full fields", "input": [ "file", "stdin" ] }, { "name": "allow-overwrite", "kind": "own", "type": "bool", "required": "optional", "desc": "Allow overwriting non-empty cells (default true); set false to error if any target cell is non-empty", "default": "true" }, { "name": "max-cells", "kind": "own", "type": "int", "required": "optional", "desc": "Safety cap; default 50000", "default": "50000", "hidden": true }, { "name": "copy-to-range", "kind": "own", "type": "string", "required": "optional", "desc": "Copy-to range (A1 notation): replicate what --cells wrote into --range (values/formulas/styles, per the fields actually passed) to this range; formula refs auto-shift (C2=B2 -> C3=B3). Write a one-row/one-block template then fill a whole column/area. Supports full rows '3:6', full columns 'C:E', to-col-end 'D3:D', to-row-end 'D3:3', and comma-separated multiple targets like 'C1:D2,E5:F6'." }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-set-style": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Target range (A1 notation, e.g. `A1:B2`)" }, { "name": "background-color", "kind": "own", "type": "string", "required": "optional", "desc": "Background color (hex, e.g. `#ffffff`)" }, { "name": "font-color", "kind": "own", "type": "string", "required": "optional", "desc": "Font color (hex, e.g. `#000000`)" }, { "name": "font-size", "kind": "own", "type": "float64", "required": "optional", "desc": "Font size in px (e.g. 10, 12, 14)" }, { "name": "font-style", "kind": "own", "type": "string", "required": "optional", "desc": "Font style", "enum": [ "normal", "italic" ] }, { "name": "font-weight", "kind": "own", "type": "string", "required": "optional", "desc": "Font weight", "enum": [ "normal", "bold" ] }, { "name": "font-line", "kind": "own", "type": "string", "required": "optional", "desc": "Font line style", "enum": [ "none", "underline", "line-through" ] }, { "name": "horizontal-alignment", "kind": "own", "type": "string", "required": "optional", "desc": "Horizontal alignment", "enum": [ "left", "center", "right" ] }, { "name": "vertical-alignment", "kind": "own", "type": "string", "required": "optional", "desc": "Vertical alignment", "enum": [ "top", "middle", "bottom" ] }, { "name": "word-wrap", "kind": "own", "type": "string", "required": "optional", "desc": "Word-wrap strategy", "enum": [ "overflow", "auto-wrap", "word-clip" ] }, { "name": "number-format", "kind": "own", "type": "string", "required": "optional", "desc": "Number format pattern (e.g. text `@`, number `0.00`, currency `$#,##0.00`, date `mm/dd/yyyy`)" }, { "name": "border-styles", "kind": "own", "type": "string", "required": "optional", "desc": "Border config JSON: `{ top: {style,color,weight}, bottom: ..., left: ..., right: ... }`; same shape for all 4 sides", "input": [ "file", "stdin" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-set-image": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Target cell (A1 notation; must be a single cell, e.g. `A1`; start and end must be identical)" }, { "name": "image", "kind": "own", "type": "string", "required": "required", "desc": "Local image path (PNG / JPEG / JPG / GIF / BMP / JFIF / EXIF / TIFF / BPG / HEIC)" }, { "name": "name", "kind": "own", "type": "string", "required": "optional", "desc": "Image file name (with extension); defaults to the basename of `--image`" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+dropdown-set": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Target range (A1 notation, e.g. `A2:A100`)" }, { "name": "options", "kind": "own", "type": "string", "required": "xor", "desc": "Options as a JSON array, e.g. `[\"opt1\",\"opt2\"]`. Server enforces no item-count cap and no per-item length cap; values containing commas are accepted (they are escape-encoded on the wire). For very large lists prefer `--source-range`.", "input": [ "file", "stdin" ] }, { "name": "colors", "kind": "own", "type": "string", "required": "optional", "desc": "Per-option pill colors, RGB hex array (e.g. `[\"#1FB6C1\",\"#F006C2\"]`). Length may be shorter than the source (`--options` items / `--source-range` cells) — extras cycle through a 10-color palette — but never longer (CLI Validate rejects: `--colors length (N) must not exceed dropdown source size (M)`). **Applies on its own**; ignored when `--highlight=false`.", "input": [ "file", "stdin" ] }, { "name": "multiple", "kind": "own", "type": "bool", "required": "optional", "desc": "Enable multi-select; default `false`" }, { "name": "highlight", "kind": "own", "type": "bool", "required": "optional", "desc": "Pill-highlight switch. **Omitted = ON** (options cycle through a 10-color palette). Pass `--highlight=false` for a plain dropdown. Override colors via `--colors`." }, { "name": "source-range", "kind": "own", "type": "string", "required": "xor", "desc": "Source range for listFromRange dropdown (A1 + sheet prefix, e.g. `'Sheet1'!T1:T3`); maps to server `data_validation.range` and auto-sets `data_validation.type='listFromRange'`. XOR with `--options`: pass `--options` for an inline list (type=list), pass this for a range reference (type=listFromRange). `--colors` length rule unchanged (≤ source range cell count); `--highlight` / `--multiple` behave the same. When `--highlight` is on and the source covers more than 2000 cells, the server flags the dropdown as option-error (highlight + large source is an unsupported combo); CLI emits a stderr warning. Pass `--highlight=false` to suppress." }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+csv-put": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "start-cell", "kind": "own", "type": "string", "required": "required", "desc": "Top-left A1 anchor (e.g. `A1`, `B5`; no sheet prefix — use `--sheet-id` / `--sheet-name` to select the sheet); must be a single cell, range notation not accepted; the bottom-right is inferred from CSV row/column counts", "default": "A1" }, { "name": "csv", "kind": "own", "type": "string", "required": "required", "desc": "RFC 4180 CSV text; values or formulas (a leading = is evaluated as a formula); no styles / comments / images (use +cells-set for those).", "input": [ "file", "stdin" ] }, { "name": "allow-overwrite", "kind": "own", "type": "bool", "required": "optional", "desc": "Allow overwriting (default true); set false to error if any target cell is non-empty", "default": "true" }, { "name": "range", "kind": "own", "type": "string", "required": "optional", "desc": "alias for --start-cell (parity with +csv-get / +cells-set, which locate with --range); a range like A1:H17 collapses to its top-left cell", "hidden": true }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+table-put": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL to write into (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token to write into (XOR with `--url`)" }, { "name": "sheets", "kind": "own", "type": "string", "required": "required", "desc": "Typed table payload (pandas-DataFrame-shaped) as JSON: top-level `{\"sheets\":[...]}`, with each array item a sub-sheet `{name, start_cell?, mode?, header?, allow_overwrite?, columns:[\"colA\",\"colB\",...], data:[[...]], dtypes?:{colA:pandasDtype, ...}, formats?:{colA:numberFormat, ...}}` — `name` and the outer `sheets` envelope are both required. Agents typically use `df_to_sheet(df, name)` from `scripts/sheets_df.py` to pack each DataFrame into one item, then wrap the list in `{\"sheets\":[...]}`. `dtypes` values are pandas dtype strings (`int64`, `float64`, `Int64`, `bool`, `boolean`, `datetime64[ns]`, `object`, ...); the writer maps them to internal string/number/date/bool — omit `dtypes` and a column writes as text (good for raw CSV-shaped data). `formats[col]` is an Excel number_format string (e.g. `#,##0.00`, `0.0%`, `yyyy-mm`); when absent, date columns default to `yyyy-mm-dd` and string columns to text format (`@`).", "input": [ "file", "stdin" ] }, { "name": "styles", "kind": "own", "type": "string", "required": "optional", "desc": "Visual operations applied after the typed write, as JSON: top-level `{styles:[...]}`. Each item corresponds to one written sheet and must include `name`, plus at least one of `cell_styles` / `row_sizes` / `col_sizes` / `cell_merges`. `cell_styles` entries use +cells-set-style fields with a cell range; row/col sizes use dimension ranges plus type/size; merges use cell ranges plus optional merge_type. The styles array length/order/name must match the written sheets in --sheets.sheets. Run `+table-put --print-schema --flag-name styles` for the full cell_styles field schema.", "input": [ "file", "stdin" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-clear": { "risk": "high-risk-write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Range to clear (A1 notation)" }, { "name": "scope", "kind": "own", "type": "string", "required": "optional", "desc": "Clear scope: `content` (default, values only) / `formats` (formats only) / `all` (values and formats)", "default": "content", "enum": [ "content", "formats", "all" ] }, { "name": "yes", "kind": "system", "type": "bool", "required": "required", "desc": "Confirm destructive write (exit code 10 without this flag); clear is irreversible" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-merge": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Range to merge / unmerge (A1 notation)" }, { "name": "merge-type", "kind": "own", "type": "string", "required": "optional", "desc": "Merge direction (`+cells-merge` only)", "default": "all", "enum": [ "all", "rows", "columns" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cells-unmerge": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Range to merge / unmerge (A1 notation)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+rows-resize": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "type", "kind": "own", "type": "string", "required": "required", "desc": "Sizing mode: `pixel` (explicit px value, requires `--size`) / `standard` (reset to default row height) / `auto` (fit content)", "enum": [ "pixel", "standard", "auto" ] }, { "name": "size", "kind": "own", "type": "int", "required": "optional", "desc": "Row height in pixels (e.g. 30 / 40 / 60); required when `--type pixel`, ignored otherwise", "default": "0" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Row closed range to resize; 1-based row numbers like `2:10` or `5` (single row)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+cols-resize": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "type", "kind": "own", "type": "string", "required": "required", "desc": "Sizing mode: `pixel` (explicit px value, requires `--size`) / `standard` (reset to default column width)", "enum": [ "pixel", "standard" ] }, { "name": "size", "kind": "own", "type": "int", "required": "optional", "desc": "Column width in pixels (e.g. 80 / 120 / 200); required when `--type pixel`, ignored otherwise", "default": "0" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Column closed range to resize; column letters like `A:E` or `C` (single column)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+range-move": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "source-range", "kind": "own", "type": "string", "required": "required", "desc": "Source A1 range" }, { "name": "target-sheet-id", "kind": "own", "type": "string", "required": "optional", "desc": "Destination sub-sheet id; defaults to the same sheet as the source" }, { "name": "target-range", "kind": "own", "type": "string", "required": "required", "desc": "Destination A1 range (anchor cell is enough; size inferred from the source)" }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+range-copy": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "source-range", "kind": "own", "type": "string", "required": "required", "desc": "Source A1 range" }, { "name": "target-sheet-id", "kind": "own", "type": "string", "required": "optional", "desc": "Destination sub-sheet id; defaults to the same sheet as the source" }, { "name": "target-range", "kind": "own", "type": "string", "required": "required", "desc": "Destination A1 range (anchor cell is enough; size inferred from the source)" }, { "name": "paste-type", "kind": "own", "type": "string", "required": "optional", "desc": "Paste content type (`+range-copy` only)", "default": "all", "enum": [ "values", "formulas", "formats", "all" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+range-fill": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "source-range", "kind": "own", "type": "string", "required": "required", "desc": "Fill template range (seed cells for the series)" }, { "name": "target-range", "kind": "own", "type": "string", "required": "required", "desc": "Destination fill range (A1 notation)" }, { "name": "series-type", "kind": "own", "type": "string", "required": "optional", "desc": "Fill series type", "default": "auto", "enum": [ "auto", "linear", "growth", "date", "copy" ] }, { "name": "dry-run", "kind": "system", "type": "bool", "required": "optional", "desc": "" } ] }, "+range-sort": { "risk": "write", "flags": [ { "name": "url", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet URL (XOR with `--spreadsheet-token`)" }, { "name": "spreadsheet-token", "kind": "public", "type": "string", "required": "xor", "desc": "Spreadsheet token (XOR with `--url`)" }, { "name": "sheet-id", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet reference_id (XOR with `--sheet-name`)" }, { "name": "sheet-name", "kind": "public", "type": "string", "required": "xor", "desc": "Sheet name (XOR with `--sheet-id`)" }, { "name": "range", "kind": "own", "type": "string", "required": "required", "desc": "Sort range (A1 notation; whether the header is included depends on `--has-header`)" }, { "name": "sort-keys", "kind": "own", "type": "string", "required": "required", "desc": "JSON array: `[{\"column\":\"