← All platforms

Google

Google Sheets

target_app: "sheets" · endpoint /v1/google/execute · OAuth — connects per end-user automatically

Setup

Same unified Google connection as Calendar — nothing separate to set up. The spreadsheet must already exist and be accessible to the connected account.

Actions

read_rows

Read a range of cells.

Request body:

{
  "user_id": "...",
  "action": "read_rows",
  "payload": { "spreadsheetId": "1BxiMV...", "range": "Sheet1!A1:C10" },
  "target_app": "sheets"
}

provider_response.result shape:

{ "values": [["Name","Email"],["Ada","ada@example.com"]] }

append_row

Append a new row after the last row of data.

Request body:

{
  "user_id": "...",
  "action": "append_row",
  "payload": { "spreadsheetId": "1BxiMV...", "range": "Sheet1!A:C", "values": ["Ada", "ada@example.com", "New"] },
  "target_app": "sheets"
}

provider_response.result shape:

{ "updates": { "updatedRange": "Sheet1!A5:C5" } }

update_range

Overwrite a specific range.

Request body:

{
  "user_id": "...",
  "action": "update_range",
  "payload": { "spreadsheetId": "1BxiMV...", "range": "Sheet1!A2:C2", "values": ["Ada", "ada@example.com", "Updated"] },
  "target_app": "sheets"
}

provider_response.result shape:

{ "updatedRange": "Sheet1!A2:C2" }

clear_range

Clear a range without deleting the rows/columns.

Request body:

{
  "user_id": "...",
  "action": "clear_range",
  "payload": { "spreadsheetId": "1BxiMV...", "range": "Sheet1!A2:C2" },
  "target_app": "sheets"
}

provider_response.result shape:

{ "clearedRange": "Sheet1!A2:C2" }

Anticipated errors & fixes

403 "The caller does not have permission"

Cause: The spreadsheet isn't accessible to the connected Google account (owned by someone else, not shared).

Fix: Share the spreadsheet with the connected Google account, or use a spreadsheet that account owns.

400 "Unable to parse range"

Cause: range string is malformed — must be A1 notation like Sheet1!A1:C10.

Fix: Match the exact tab name (case-sensitive) followed by !, then the cell range.

401 "Unauthorized: Invalid API key."

Cause: Your eConnect Authorization header is missing, malformed, or the key was regenerated/revoked.

Fix: Copy your api_key fresh from the eConnect dashboard and confirm the header reads exactly "Authorization: Bearer <key>".

429 "Too many requests"

Cause: You've exceeded your plan's per-minute rate limit.

Fix: Wait a minute and retry, or upgrade your plan for a higher per-minute limit.

429 "Monthly API limit exceeded"

Cause: You've used your plan's full monthly request allowance.

Fix: Wait for your next billing cycle reset, or upgrade to a plan with a higher monthly limit.

← Back to all platforms