Scheduled CSV emails from an Airtable view: 3 ways compared
ViewCourierDisclosure: written by the team behind ViewCourier, which is option 3. Options 1 and 2 work without it.
A request that comes up again and again in the Airtable community: "every Monday at 8:00, email this view to my manager, client or accountant as a CSV." Airtable lets you download a grid view as CSV by hand. It can't schedule that download, and no automation action turns a view into a file attachment. Here are the three workarounds people actually use, with their real limits.
First: make an export view
Whatever you pick, create a dedicated view such as "Export - do not edit". Filter it to the rows the recipient should see, hide the fields they shouldn't, and sort it the way people read it. Every method below reads from that view.
Option 1: automation + Run script
A scheduled automation ("At a scheduled time") with a Run script action can turn a view into CSV text:
const table = base.getTable('Orders');
const view = table.getView('Export - do not edit');
const fields = ['Order ID', 'Customer', 'Status', 'Total'].map((n) => table.getField(n));
const query = await view.selectRecordsAsync({ fields });
const q = (v) => { const s = v == null ? '' : String(v); return /[",\r\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; };
const rows = [fields.map((f) => q(f.name)).join(',')];
for (const r of query.records) rows.push(fields.map((f) => q(r.getCellValueAsString(f))).join(','));
const csv = rows.join('\r\n');The catch is delivery. The built-in Send email action can't attach the text as a file, and a list of records pasted into an automation email shows at most 100 records. So the script has to call an email API (SendGrid, Mailgun, Postmark) itself, with a second account and an API key in your base. You also maintain the column list by hand, and Run script needs a paid Airtable plan.
Good fit if you write JavaScript, already have an email API, and the view is small and stable. Longer walkthrough: Export an Airtable view to CSV with a script.
Option 2: Make or Zapier
Schedule trigger, Airtable "Search records" on the view, an aggregator that builds CSV text, a "Create file" step, then Gmail or Outlook with the file attached. It's the right choice when the export is one step in a bigger workflow.
Costs to know: operations or tasks are counted per record, so a 2,000-row weekly export can burn thousands a month; columns are mapped by hand; quoting, UTF-8 for Excel and Airtable's API paging are yours to handle; and the mail goes out from one person's connected mailbox. More: A simpler alternative to Zapier and Make for Airtable CSV exports.
Option 3: ViewCourier
ViewCourier does only this job. Paste a read-only Airtable personal access token, pick base, table and view, choose daily, weekly or monthly at an hour in your timezone, add up to five recipients, and pick CSV, Excel (.xlsx) or a PDF report. The view's filters, sort and visible fields define the file, so adding a field to the view changes the next export with no edits. It can skip the email when the view is empty, and a live CSV link works with =IMPORTDATA() in Google Sheets.
There's a Free plan (one weekly or monthly export, up to 1,000 rows, no card). Paid plans are EUR 9 and EUR 19 a month for daily or hourly schedules and bigger views. Limits, to be fair: delivery is email or the live link only, and it's one view per export, not a full-base backup.
Which one to pick
- Small view, you like code, you have an email API: the script.
- The export is part of a larger workflow: Make or Zapier.
- You just want "this view, as a file, in these inboxes, on this schedule": a dedicated tool.
Free tools that need no signup
These run in your browser with your own token; nothing passes through a server:
- Export a whole Airtable base to CSV (ZIP)
- Export a whole Airtable base to one Excel workbook
- Print or save an Airtable view as PDF
- Airtable schema / data dictionary export
- Airtable record counter vs plan limits
- Download all Airtable attachments at once (ZIP)
If your real problem is that automation emails cut off at 100 records, see How to email more than 100 Airtable records at once.