sheets
orc sheets operates on spreadsheets that your connected Google account can access. The commands are designed so an agent does not have to guess coordinates: learn the structure, read only the values you need, preview the change, then write.
get returns tabs, native Tables (name, range, column names, and column types), and named ranges without reading cell values. values get reads several A1 ranges and Table columns in one Google request; reference a Table by name and receive only the columns you ask for. values update with preview returns the before/after diff of the cells that would change without writing. tables create creates a typed native Table, and tables rows create appends rows inside the Table, above any footer.
Writes are not idempotent. If a write times out, its outcome is unknown: read the target range before retrying. Appending rows is not an upsert.
Usage
Find the connection ID. The spreadsheet ID is the part of the sheet URL between /d/ and /edit.
orc connections list --workspace YOUR_WORKSPACE_ID --provider google-sheets --format jsonExample
Subcommands
get
Read tabs, Tables, and column types
orc sheets get <id> <spreadsheet-id> [options]create
Create a spreadsheet
orc sheets create <id> [options]Unique options
--locale
Body field: locale; max 20 chars
Type: string. Optional.
orc sheets create <id> --locale <value>--sheet-titles
Tab titles to create. Defaults to one Google-named tab.; csv
Type: string. Optional.
orc sheets create <id> --sheet-titles <value>--time-zone
Body field: time_zone; max 100 chars
Type: string. Optional.
orc sheets create <id> --time-zone <value>--title
(required) Body field: title; max 500 chars
Type: string. Optional.
orc sheets create <id> --title <value>values get
Read several ranges and Table columns
orc sheets values get <id> <spreadsheet-id> [options]Unique options
--max-rows
Row cap per range or table. truncated reports when rows were cut.
Type: number. Optional.
orc sheets values get <id> <spreadsheet-id> --max-rows <value>--ranges
A1 ranges to read. On the CLI, pass several as comma-separated values.; csv
Type: string. Optional.
orc sheets values get <id> <spreadsheet-id> --ranges <value>--render
unformatted returns exact numbers; formatted returns displayed text; formula returns formulas instead of results.; enum: unformatted|formatted|formula
Type: string. Optional.
orc sheets values get <id> <spreadsheet-id> --render <value>--tables
Body field: tables; JSON array of objects (use --stdin for large resources)
Type: string. Optional.
orc sheets values get <id> <spreadsheet-id> --tables <value>values update
Write several ranges (preview the diff first)
orc sheets values update <id> <spreadsheet-id> [options]Unique options
--data
(required) Body field: data; JSON array of objects (use --stdin for large resources)
Type: string. Optional.
orc sheets values update <id> <spreadsheet-id> --data <value>--input
raw stores values as given. user_entered parses values like the Sheets UI, including formulas starting with "=".; enum: raw|user_entered
Type: string. Optional.
orc sheets values update <id> <spreadsheet-id> --input <value>--preview
Read the target cells and return the before/after diff without writing.
Type: string. Optional.
orc sheets values update <id> <spreadsheet-id> --preview <value>tables create
Create a typed native Table
orc sheets tables create <id> <spreadsheet-id> [options]Unique options
--anchor
Top-left cell of the header row.
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --anchor <value>--columns
(required) Body field: columns; JSON array of objects (use --stdin for large resources)
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --columns <value>--input
raw stores values as given. user_entered parses values like the Sheets UI, including formulas starting with "=".; enum: raw|user_entered
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --input <value>--name
(required) Body field: name; max 200 chars
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --name <value>--rows
Rows as arrays in column order, or objects keyed by column name. Missing keys become empty cells; unknown keys are rejected.; csv
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --rows <value>--sheet
(required) Existing tab title.; max 100 chars
Type: string. Optional.
orc sheets tables create <id> <spreadsheet-id> --sheet <value>tables rows create
Append rows to a Table
orc sheets tables rows create <id> <spreadsheet-id> <table-id> [options]Unique options
--input
raw stores values as given. user_entered parses values like the Sheets UI, including formulas starting with "=".; enum: raw|user_entered
Type: string. Optional.
orc sheets tables rows create <id> <spreadsheet-id> <table-id> --input <value>--rows
(required) Rows as arrays in column order, or objects keyed by column name. Missing keys become empty cells; unknown keys are rejected.; csv
Type: string. Optional.
orc sheets tables rows create <id> <spreadsheet-id> <table-id> --rows <value>Examples
Inspect the structure
orc sheets get YOUR_CONNECTION_ID SPREADSHEET_ID --workspace YOUR_WORKSPACE_ID --format jsonInspect the structure
Read ranges and Table columns
Save the following JSON as read.json. render is unformatted (exact numbers), formatted (displayed text), or formula (formulas).
orc sheets values get YOUR_CONNECTION_ID SPREADSHEET_ID --workspace YOUR_WORKSPACE_ID --stdin --format json < read.jsonRead ranges and Table columns
{
"ranges": ["Metrics!A1:A3"],
"tables": [{ "table": "Weekly", "columns": ["week", "sessions"] }],
"render": "unformatted",
"max_rows": 500
}Preview a change, then write it
Run with preview set to true to see the diff, then set it to false to write. null leaves a cell unchanged and an empty string clears it. Use input: user_entered to write formulas.
orc sheets values update YOUR_CONNECTION_ID SPREADSHEET_ID --workspace YOUR_WORKSPACE_ID --stdin --format json < write.jsonPreview a change, then write it
{
"data": [{ "range": "Metrics!C3:C4", "values": [[1200], ["=SUM(C2:C3)"]] }],
"input": "user_entered",
"preview": true
}Create a typed Table
Writes the header and rows and creates the Table in one atomic batch. Dates accept ISO text (YYYY-MM-DD). Values that do not match a column type are rejected before anything is sent.
orc sheets tables create YOUR_CONNECTION_ID SPREADSHEET_ID --workspace YOUR_WORKSPACE_ID --stdin --format json < table.jsonCreate a typed Table
{
"name": "Weekly",
"sheet": "Metrics",
"anchor": "A1",
"columns": [
{ "name": "week", "type": "date" },
{ "name": "channel", "type": "text" },
{ "name": "sessions", "type": "number" }
],
"rows": [{ "week": "2026-09-28", "channel": "organic", "sessions": 1200 }]
}Append rows to a Table
Reference the Table by ID or name. Unknown column names are rejected.
echo '{"rows":[{"week":"2026-10-05","channel":"organic","sessions":1350}]}' | orc sheets tables rows create YOUR_CONNECTION_ID SPREADSHEET_ID Weekly --workspace YOUR_WORKSPACE_ID --stdin --format jsonAppend rows to a Table
Create a spreadsheet
orc sheets create YOUR_CONNECTION_ID --workspace YOUR_WORKSPACE_ID --title 'AI visibility report' --sheet-titles Summary,Weekly --format jsonCreate a spreadsheet
Permissions
Connect Google Sheets in Settings → Integrations and grant the spreadsheets scope. The spreadsheet must be shared with the connected Google account. Orchestor requires authentication and an accessible workspace.
Global Options
The following global options can be used with orc sheets:
For details and examples, see global options.