comparison

How to Automatically Save Gmail Emails to Google Sheets (4 Ways)

Leandro Zubrezki··12 min read
How to Automatically Save Gmail Emails to Google Sheets (4 Ways)
Table of Contents

To save Gmail emails to Google Sheets automatically, create a Gmail filter for the emails you care about and forward them to an address that writes each one into your spreadsheet as a new row. With Quicktion that takes about five minutes: you get a forwarding address like abc123@in.quicktion.io, pick the spreadsheet and the columns, and point the Gmail filter at it.

Gmail and Sheets are both Google products, but there's no built-in way to send an email to a spreadsheet. You need one of these four methods:

  1. Gmail filter + email forwarding: automatic, rule-based, no code
  2. Gmail add-on: one click on the email you're reading
  3. Google Apps Script: free, and the code is below
  4. Zapier or Make: trigger-based, for multi-app workflows
MethodAutomatic?SetupCostLinks + attachmentsAI extraction
Forwarding (Quicktion)Yes, via Gmail filters~5 minFree up to 25/mo, Pro $12/moClickable links, attachments in DriveYes (Pro)
Gmail add-on (Quicktion)No, one click per email~2 minFree up to 25/mo, Pro $12/moClickable links, attachments in DriveYes (Pro)
Google Apps ScriptYes, time trigger15-30 min with the script belowFreePlain text, attachments are on youNo
Zapier / MakeYes, trigger15-20 minPaid plans for real volumePlain text, attachments need extra stepsNo

Quick pick: if you can describe the emails as a rule ("everything from Stripe", "subject contains Order #"), use forwarding. If you decide email by email, use the add-on. If the budget is zero and you're fine owning code, use Apps Script.

Before you start: ongoing or one-time?

Most people want the ongoing version: new emails land in the sheet without anyone touching them. That's what the four methods below do.

If you need a one-time dump of emails that are already in your inbox, it's a slightly different job. The Apps Script below can work through an existing label in one run. The add-on handles a handful of emails one by one. For a full mailbox export, see how to export emails from Gmail.

Save emails in seconds

Forward any email to your Quicktion address and it lands in Notion, Google Sheets, Airtable, Linear, Trello, or Google Drive automatically.

Method 1: Gmail filter + email forwarding

This is the set-it-and-forget-it option. You write the rule once and stop thinking about it.

Set it up

  1. In your Quicktion dashboard, create a destination and pick your Google spreadsheet and the sheet tab. Quicktion gives you a forwarding address like abc123@in.quicktion.io.
  2. Map email fields to columns: subject, sender name, sender email, date, body, attachments. Pick the ones you want, in your order. You can reorder columns in the sheet later without breaking anything.
  3. In Gmail, add the forwarding address under Settings > See all settings > Forwarding and POP/IMAP. Gmail sends a confirmation link to that address, and Quicktion passes it on to you by email and in the dashboard. Click it once.
  4. Create a filter: click the options icon in the Gmail search bar, set the criteria (from, subject, has the words, has attachment), click Create filter, tick Forward it to and choose your Quicktion address.

From then on every matching email becomes a row. Gmail filters only act on mail that arrives after you create them. For emails you already have, see how to forward existing emails in Gmail.

What a row looks like

The date is written in the spreadsheet's timezone, so it sorts and filters like a real date. Attachments go to a Google Drive folder and the row links to them.

The body is the detail I care about most. Most methods paste a wall of plain text with dead URLs into the cell. Quicktion keeps the links clickable, which matters the first time you need to open the tracking link from an order email three weeks later.

Forwarding isn't Gmail-only. The same address works from Outlook, Microsoft 365 or any client that can forward (Outlook version here).

When to use it

High-volume, predictable email: receipts from known vendors, Shopify or Etsy order confirmations, leads from a contact form, alerts. Anything where you can write the rule once.

Method 2: Gmail add-on

The add-on is for emails you choose one at a time. Open an email in Gmail, click the Quicktion icon in the side panel, pick the spreadsheet, check the values and save.

Set it up

  1. Install Quicktion from the Google Workspace Marketplace and grant the permissions.
  2. Open Gmail, click the Quicktion icon in the right sidebar and sign in.
  3. Connect your Google account and create a destination for your spreadsheet (same as in Method 1).
  4. Open any email, pick the destination, edit any value if needed, and save.

The edit step is the main reason to use the add-on over forwarding. You see the row before it's written and can fix a subject or fill in a column by hand.

When to use it

Client emails worth logging, one-off receipts, anything that doesn't follow a pattern. Many people run both: forwarding for the predictable stuff, the add-on for the rest. Both are on the free plan.

Method 3: Google Apps Script (free, code included)

Apps Script is Google's JavaScript platform and can read Gmail and write to Sheets. It costs nothing. The trade-off is that you own the code.

Here's a working starting point. It takes every thread with the Gmail label to-sheets, writes one row per message, then labels the thread in-sheets so it isn't saved twice.

1. Create the labels and the sheet

In Gmail, create two labels: to-sheets and in-sheets. Add a Gmail filter that applies to-sheets to the emails you want. In your spreadsheet, add a tab named Emails with headers in row 1: Date, From, Subject, Body.

2. Paste the script

In the spreadsheet, go to Extensions > Apps Script, replace the code with this and save:

function saveLabeledEmailsToSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');
  const doneLabel = GmailApp.getUserLabelByName('in-sheets') || GmailApp.createLabel('in-sheets');
  const threads = GmailApp.search('label:to-sheets -label:in-sheets', 0, 50);

  for (const thread of threads) {
    for (const message of thread.getMessages()) {
      sheet.appendRow([
        message.getDate(),
        message.getFrom(),
        message.getSubject(),
        message.getPlainBody().slice(0, 50000), // a cell holds 50,000 characters at most
      ]);
    }
    thread.addLabel(doneLabel);
  }
}

3. Run it on a schedule

Click Run once and accept the permissions. Then open Triggers (the clock icon), add a trigger for saveLabeledEmailsToSheet, choose Time-driven and pick an interval like every 15 minutes.

The script handles 50 threads per run, so a backlog clears over a few runs.

What it doesn't do

  • Replies to a thread that's already saved get skipped, because the in-sheets label sits on the whole thread. If replies matter, you'll need to track message IDs instead.
  • The body is plain text. Links aren't clickable and the formatting is gone.
  • Attachments aren't saved. You'd call message.getAttachments(), create the files in Drive and write the links yourself.
  • There are no retries or alerts. If a run fails, you find out when you notice the gap. Gmail and Apps Script also have daily quotas.

When to use it

For a plain log of date, sender and subject, this script is honestly fine, and it's free. It gets painful when you want attachments, clickable links, or something that keeps running while you're not watching. That's the point where the hours you put into the script cost more than a tool would.

Method 4: Zapier or Make

Zapier and Make connect Gmail and Sheets with a trigger (new email matching a search) and an action (add a row). In Make it's a scenario with two modules.

Pros

  • Flexible triggers and conditions, for example routing different emails to different sheets.
  • One trigger can do several things: add the row, post to Slack, create a task.
  • Easy to add if you already pay for Zapier or Make.

Cons

  • The body usually arrives as plain text, without clickable links.
  • Attachments need extra steps to upload to Drive and link back.
  • Real volume needs a paid plan, and task-based pricing grows with every email.
  • No way to pick one email from inside Gmail.
  • Moving or renaming columns can break the field mapping.

When to use it

When the email is one step in a bigger multi-app workflow. If the goal is only "email to row", a dedicated tool is less setup.

Comparison

FeatureForwardingGmail add-onApps ScriptZapier / Make
AutomaticYes (Gmail filters)No (one click)Yes (time trigger)Yes (trigger)
Setup time~5 min~2 min15-30 min15-20 min
Works with Outlook and other clientsYesNoNoOutlook connector
Edit before savingNoYesNoNo
Body with clickable linksYesYesNoNo
Attachments to DriveAutomaticAutomaticYou code itExtra steps
Reorder columns without breakingYesYesYou code itCan break the mapping
AI extraction from body and PDFsProProNoNo
Free tier25 emails/mo25 emails/moFree, quotas applyLimited
MaintenanceNoneNoneYoursLow

The same setup works if the destination is a Notion database or an Airtable base.

Pulling specific values into columns with AI

A row with the full email body is useful. A row where the amount, invoice number and due date sit in their own columns is better, because you can sum and filter it.

On Pro, Quicktion's AI Email Intelligence does this. In the column mapping, set a column's role to AI extraction, describe what goes in it ("total amount in USD", "invoice due date"), and each saved email fills that column. It also reads PDF and image attachments, so the numbers on an invoice PDF can land in the row even when the email body says nothing. Details are in the AI extraction help article.

Common uses

Receipts are the most common one. Filter purchase confirmations from Amazon, Stripe, PayPal and the like into an expense sheet, and the PDFs land in Drive, linked from each row. Turn on AI extraction and the amount gets its own column, so the sheet can sum it. The full setup is in tracking email receipts and invoices in Google Sheets.

Leads work the same way: forward contact-form and inquiry emails to a sheet, add Status and Value columns, and you have a simple pipeline (email tracking spreadsheet guide). Store owners do it with Shopify, Etsy and marketplace confirmations to keep an order log (Shopify order emails to a spreadsheet). And some people just want a searchable newsletter archive with a Read column.

Frequently asked questions

How do I automatically save Gmail emails to Google Sheets?

Create a Gmail filter that matches the emails you want (a sender, a subject word, has attachment) and forward them to a Quicktion forwarding address linked to your spreadsheet. Each matching email becomes a new row with subject, sender, date, body and attachments in the columns you chose. If you prefer a free option and can edit code, a Google Apps Script on a time trigger does the same job.

Can you save Gmail emails to Google Sheets for free?

Yes. Quicktion's free plan saves 25 emails a month to one spreadsheet, with both forwarding and the Gmail add-on. Google Apps Script is free with no monthly cap, but you write and maintain the script yourself. This article includes a script you can copy.

Can Google Apps Script save emails to Sheets?

Yes. A short script can search Gmail for a label, append one row per email and then mark the thread as done. Run it on a time-driven trigger, for example every 15 minutes. It saves plain text only, and you handle attachments, quotas and errors yourself.

How do I export Gmail emails to a spreadsheet?

For emails that arrive from now on, use forwarding or a script as described here. For a one-time export of emails you already have, the Gmail add-on saves an open email with one click, and the Apps Script in this article can process an existing label in one run.

What data gets saved from Gmail to Sheets?

With Quicktion: subject, sender name, sender email, date, the full body as rich text with clickable links, and attachments uploaded to Google Drive and linked in the row. You decide which columns exist and in what order. On Pro, AI extraction can also fill columns like amount or due date from the email or from an attached PDF.

What is the best Gmail to Google Sheets integration?

For most people, Quicktion: forwarding covers the automatic part, the Gmail add-on covers one-off saves, and both keep links clickable and put attachments in Drive. Zapier and Make make sense when the same email also needs to go to other apps. Apps Script makes sense when the budget is zero and you are fine owning the code.

Get started

Create a free Quicktion account, connect Google and set up a forwarding address or the Gmail add-on. The first email can be in your sheet in a few minutes.

More on this:

Ready to put your emails where they belong?

Quicktion lets you forward emails or use the Gmail add-on to save messages to Notion, Google Sheets, Airtable, Linear, Trello, or Google Drive. No code required.

LZ

Leandro Zubrezki

Founder of Quicktion

Building tools to bridge the gap between email and the tools you already use. Leandro created Quicktion to help teams save time by automating email workflows across Notion, Google Sheets, Airtable, Linear, Trello, and Google Drive.

Related Posts