# Manage Google Sheet

**Manage Google Sheet** reads or writes a tab in Drive. Authorize Google first or the picker is empty and the runtime fails.

  <ShotPlaceholder
    src="/assets/workflow-nodes/manage-google-sheet.png"
    name="wn-sheet"
    alt="Manage Google Sheet — operation and picker"
    capture="Google Sheet node. 1600×900. Operation + sheet/tab. No personal emails in the sheet preview."
  />

## Why this node

A leads tab, a simple store of SKUs, append a row after the call. A real CRM is still [HubSpot](https://docs.voicelogica.ai/workflow-nodes/hubspot/) or [Connect To External Service](https://docs.voicelogica.ai/workflow-nodes/api/).

Grant **Use spreadsheets** (and Drive to browse) on [Google authorizations](https://docs.voicelogica.ai/integrations/google/). Calendar / Gmail send are different scopes.

## What you configure

- **Operation** (required) — **Get Data**, **Get Row**, **Get Rows**, **Update Row**, **Append Row**, **Delete Row**. Seed is Get Data (no filter).
- **Spreadsheet ID** (required) — From the picker, or the id in the sheet URL.
- **Sheet / Tab Name** (required) — The tab, not the file name.
- **Filter By** — On Get/Update/Delete Row: **Row Index** or **Column Name** + **Match Value** (`{{call.phone_number}}`).
- **Values** — Column → value on Update / Append.

Ports: **Sheet updated**, **Sheet error**, **No wait**. Downstream fields come from the row you fetched.

## First setup — append the caller after hang-up

1. A sheet with a `phone` column. Google Scopes granted.

2. [On Call End](https://docs.voicelogica.ai/workflows/on-call-end/) → **Manage Google Sheet**. **Append Row**. Pick the file and tab. `phone` = **Call Parameters**.

     <ShotPlaceholder
       src="/assets/workflow-nodes/manage-google-sheet-filled.png"
       name="manage-google-sheet-filled"
       alt="Manage Google Sheet filled"
       capture="Workflow builder → Manage Google Sheet selected. Append Row, spreadsheet, tab, phone column mapped. 1600×900. Redact numbers/emails/PINs."
     />

3. **Save & go live**, attach, hang up a test call. Refresh the sheet.

Get Row + [AI Response](https://docs.voicelogica.ai/workflow-nodes/ai-response/) is the mid-call path (order status by phone). Keep that GET fast.

## What “broken” looks like

- **Needs setup** — no file, no tab, or no operation.
- Picker empty / 403 — scopes not granted on *this* company.
- Update hits the wrong row — **Match Value** does not equal the cell (spaces, missing `+`).

## Troubleshooting

**Get Data vs Get Row**

**Get Data** is the whole tab (or the node’s read of it). **Get Row** is one match. Use Get Row when the next node needs one record.

## Next Steps

[Create Google Document](https://docs.voicelogica.ai/workflow-nodes/google-document/).  
[On Call End](https://docs.voicelogica.ai/workflows/on-call-end/).  
[Google authorizations](https://docs.voicelogica.ai/integrations/google/).
