▤Basepull

How to sync Airtable to Google Sheets automatically

Updated September 2026. Airtable is a good place to enter data and a frustrating place to analyse it. Sooner or later somebody asks for a pivot table, a Looker Studio dashboard, or a sheet a colleague can open without an Airtable seat — and you need the records in Google Sheets™, kept current, without doing it by hand every Monday.

There are five realistic ways to do that. The differences that matter are not features; they are how often the data can refresh, how many rows you are allowed, and whether your records pass through someone else's servers. Here is each method with those three things spelled out.

Method 1: Manual CSV export

In Airtable, open a view, use the … menu and choose Download CSV, then import the file into Sheets. It is free, it works, and it respects the view you exported (hidden fields stay hidden, filters apply).

The problem is that it is a photograph, not a feed. Every refresh is a human doing five clicks, and the moment somebody forgets, the dashboard downstream is quietly wrong. This is fine for a one-off analysis and unusable as a recurring report.

Method 2: A shared view link plus IMPORTDATA (mostly dead)

The old trick was to publish an Airtable view as a shared link, append ?format=csv, and pull it into a cell with =IMPORTDATA(...). You will still find it in blog posts from a few years ago.

It rarely survives today. Airtable's share links now sit behind an interstitial that IMPORTDATA cannot follow, so the formula returns an error or a page of HTML. Even when it does work it has real drawbacks: the link is public to anyone who has it, Sheets caches the result on its own schedule rather than yours, and there is a hard limit on the size of the response. Treat this one as a historical footnote.

Method 3: Write your own Apps Script

Airtable has a REST API, Google Sheets has Apps Script, and gluing them together is an afternoon of work if you are comfortable with JavaScript. You create a personal access token in Airtable, fetch /v0/{baseId}/{tableId}, page through the records, flatten the field types you care about, and write the result with setValues(). A time-driven trigger runs it hourly.

This is the cheapest option that actually refreshes on a schedule, and you own every line of it. What people underestimate is the long tail: pagination, rate limits (Airtable allows 5 requests per second per base and will return 429s if you exceed it), attachments and linked records that arrive as arrays of objects, dates that need formatting, columns that get added in Airtable next month, and the quiet failure mode where a trigger dies and nobody notices for three weeks. If you enjoy maintaining that, this is a perfectly good answer.

Method 4: Zapier or Make

Both can watch an Airtable table and append rows to a sheet. They are excellent at event automation — "when a record is marked Won, post to Slack" — and a poor fit for mirroring a table.

The reason is structural: they think in individual records, not in tables. A new record creates a row, but an edited record does not update the row it created, and a deleted record leaves its row behind. Within a month your sheet and your base disagree. You also pay per task, so a 2,000-row base is 2,000 tasks every time you resync, which gets expensive quickly.

Method 5: A scheduled sync add-on

The category built for this job: an add-on picks a base, table and view, writes the rows into a tab, and repeats on a schedule. No formulas, no code, no drift, because the whole tab is replaced each run.

The catch is pricing, and it is worth being precise about it, because the headline price is not the price of the thing most people actually want. Almost everyone wants hourly refresh, and hourly is the feature vendors reserve for their upper tiers:

Cheapest planCheapest plan with hourly refreshRow limitData path
Coupler.io$32/mo (daily)$259/mo (Pro)5,000/run on StarterVia Coupler servers
Coefficient$49/mo (daily)$99/user/mo (Pro)5,000 on StarterVia Coefficient servers
BasepullFree (1 manual sync)$19/mo flat200,000/sync on ProDirect: your Google account → Airtable

Competitor prices checked on their public pricing pages, September 2026. They change; check before you buy.

Setting up a scheduled sync with Basepull

Basepull is our own add-on, so treat this section as what it is — but the setup is short enough to be useful even if you pick something else, because every tool asks for the same four things.

  1. Install Basepull. Add it to Google Sheets from the Google Workspace Marketplace. There is nothing to configure yet.
  2. Connect Airtable. In your spreadsheet: Extensions → Basepull → Open Basepull, then click Connect Airtable. Airtable asks you to approve read-only access (data.records:read and schema.bases:read) to the bases you choose. Basepull never asks for an API key.
  3. Pick base → table → view. Choosing a view is the important step: the sync inherits the view's hidden fields, field order, filters and sorts, so you shape the output in Airtable rather than with formulas in Sheets.
  4. Name the destination tab and pick a schedule. Manual, hourly, every six hours or daily. Each run replaces the tab's contents, so formulas in other tabs that reference it keep working.

How Airtable field types land in Sheets

This is where most home-made scripts get untidy, so it is worth knowing what to expect from any tool you choose:

Which method should you use?

Be honest about the refresh interval you need, because it decides everything:

If you want the hourly case without a three-figure bill, that is the gap Basepull was built for: $19/month flat, up to 200,000 rows per sync, with a free plan so you can check it works on your data first.

Get Basepull