Sparround

Automating Google Sheets and Gmail

Google Sheets and Gmail are the most-used app nodes in n8n — every company has them and neither needs a technical team.

The Google Sheets node has operations at the document and sheet level. The ones you use most:

  • Append Row — adds a new row
  • Append or Update Row — updates the row if it exists, otherwise appends it (an upsert)
  • Get Row(s) — reads rows from a sheet
  • Update Row — updates an existing row
  • Clear — empties the sheet

Append or Update Row is the most valuable operation: it makes a workflow idempotent, so running it twice does not create duplicates.

The Gmail node works at the message, thread, draft and label level. The operations you need most in practice: Send, Reply, Get Many, Add Label and Mark as Read.

Working with labels is the unsung hero of email automation. Labelling a processed message, or marking it read, prevents the same message being processed twice — the fix for the most common problem in email-driven workflows.

The Gmail Trigger starts a workflow when mail arrives. Always filter it: by subject, sender or label. An unfiltered trigger reacts to the entire mailbox — quiet in testing, hundreds of pointless executions in production.

ScenarioNode chainThe key nuance
Website form leads into a sheetWebhook → Edit Fields → Google Sheets (Append or Update Row)Use the email column as the key so the same person is not written twice
Emailing a daily reportSchedule → Postgres → Convert to File (XLSX) → Gmail (Send)Do not send when the result is empty — check with an IF
Processing incoming CVsGmail Trigger → Extract From File (PDF) → AI → Google SheetsAdd a label after processing so the message is not reprocessed
Emailing based on rows in a sheetSchedule → Google Sheets (Get Rows) → Filter → Gmail (Send) → Sheets (Update Row)Mark the row "sent" afterwards — that is what prevents repeats
First-line replies to support emailGmail Trigger → AI Agent → Gmail (Reply) → Gmail (Add Label)A human approval before the automatic reply is safer

Google Sheets is convenient but it is not a database. With high volume, concurrent writes or fast lookups it becomes the bottleneck. In those cases move to n8n's Data Table feature or a real database. A sheet is for reports people read; a database is for data systems work with.

📚 Sources and documentation