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.