With this automation, you can automatically import and update rows from CSVs into Airtable. This automation can be scheduled to run regularly, and supports webhooks. Every time the automation is run, we go through every row in the CSV, and check whether or not it exists in Airtable. If it doesn’t, we add it to Airtable. If it does exist, we update it.
Note that we determine whether or not a row has already been added to Airtable by checking whether or not its unique value already exists on Airtable. Because of this, your CSV must have a column that has a unique value for each row. This can be a unique ID, SKU, username, email, etc.
Features
- Supports adding and updating records (all field types)
- Supports Dropbox share URLs. Example: https://www.dropbox.com/s/a1b2c3d4ef5gh6/example.docx?dl=0
- Supports Google Drive share URLs. (public ones, not private!)
Example: https://drive.google.com/file/d/1kazyfB4JHoZSmczN-FBVXB4C8qN5b46G/view?usp=sharing - Supports Google Sheets published URLs as shown in the video above! (published to web as csv)
Example: https://docs.google.com/spreadsheets/d/1eIK55CTqtFTzjb0CBtjNO_0mBqV0TRodq_0oXAhB0Fs/pub?gid=80990696&single=true&output=csv - Can be triggered by a schedule or a Webhook.
⚠️ Note
This automation can only sync a few thousand records.
Limitations
- Only supports adding and updating records, but doesn’t support deleting existing records.
- Airtable must have field names that are matching all the CSV column names before the import.
- Columns/field names are case sensitive and they have to match exactly.
- CSVs must have a column that contains a unique value for each row (ID, SKU, username, email, etc.)
- The Collaborator field is not supported.
Use Cases
Some examples
- Pull data from Google Sheets
- Sync multiple bases (with our exporter)
- Automate some daily reports
- Auto-sync with 3rd parties with no API
Troubleshooting
My CSV is not being imported. I’m getting an error!
Before you start importing your CSV with our automation, make sure that your Airtable table have all the field names that exist in your CSV file. If you’re starting with a brand new table, then the easiest way to create all the required fields is to import your CSV file in Airtable first. Then you can schedule your CSV to be automatically imported with miniExtensions going forward.
I keep getting an error “Could not import CSV because there is a row that does not have a value for “UniqueID”. I have no row with empty UniqueID.
Make sure that your file URL is both public and direct, not private!
(checkout the screenshot for an example of a non-public link)
How to setup a schedule for a job to run every day at 8am? I can’t see how to set the time.
If you select the extension settings to run ‘every 24 hours’ and you hit save at 8 AM, it will run every 24 hours going forward.
If I set up Airtable Automations to trigger via a webhook that should work right? I am not very familiar with webhooks yet, this is why I ask.
The webhook is a unique URL for your extension. Every time it’s accessed (opened), it will trigger the extension to run. The extension will run in the same way as if you clicked on the run button on the settings page manually.
I’m getting this error:
The CSV file URL has to be public and direct. If you’re trying to import a private URL, the login webpage will be fetched. And that’s why you’re getting this error.
Also, note that to get direct URL in Google Sheets, you would need to change it to something like this:
I re-synced my base already, but I’m still getting an error that says:
Notice there is a space at the end of that field name. It has to be exactly the same. The best way to avoid these mistakes is to first import the actual CSV file initially in Airtable and then schedule it to be synced afterward.
I am getting an error message “You cannot update the same record multiple times in a single request”
You are seeing this error because this extension requires to have a field with unique IDs. This field cannot have multiple records with the same ID.
We’re running into some limitations with airtable’s csv import app and are looking for a third party app that’ll do the trick. I’d like to run the specific functionalities by you to make sure they’d work with your extension. The root of our situation is that we need to be able to import bulk records and have them be entered either as new records or merge/update existing records is they share a “RefID”. Airtable’s import block will not allow record merges based on function fields, but our RefID field is a concatenation of another field in the record and part of the record ID written into airtable. The format is “XXX-####”. We have external partners sending us their data with some regularity. Records on their data will either have a “RefID” field that matches our existing records, we need these to be merged, or their data will have no value entered for “RefID” and we need those to be imported as new records. So we need to be able to determine whether to add/update a record based on a function field. And we need to have a different selection of fields for records being updated than for new records.
If the problem you have is the inability to use a formula field type for the matching field (or what we call the unique ID field), you would have the same issue with our extension, because it’s not possible to edit computed fields in Airtable.