Add Airtable Append option to automatically remove unmatched fields

There’s a really convenient option Add All Fields on the airtable node which allows for appends without having to set every field - which is especially onerous for wide tables

There’s just one problem… if there are any fields that don’t exist in the table then the request fails. I think there should be a way to make it not fail and that would be great.

Here’s my idea:

We add an additional option that allows for retries on failed property names that removes those props from the data before sending it into Airtable

That way we get an outcome with minimal effort:

  • don’t have to set the property names
  • don’t have to worry if there are property names in the data that don’t match with the table columns

and everything just works™

Not sure if @jan you’ve seen someone mention this before?

Trying to solve this myself, but unfortunately when using the Airtable List operation it will only return data for which fields are filled.

This is problematic because it prevents the table column names from being read which would be useful to avoid sending fields that are unmatched

Probably going to be opening a separate post for this

Update:

Attempted to update this myself, but ran into this issue while following the CONTRIBUTING.md in the repo:

You need to be able to get all the fields from a table. As far as I know, the only way to do that is by using the Airtable metadata API. Such API requires different API Keys, and you need to fill up an application to get it. That makes it a problem since we do not want everybody to go through such an application to use the node.

Thanks @RicardoE105 will definitely keep that in mind, quick question - would you happen to know where the actual code for the nodes lives?

I’ve cloned the n8n repository followed the contributing guidelines but I have no idea how to navigate the repo structure

Update: I think I’ve found it :sweat_smile:

fyi, it is also easily possible to find the source code of each node via our website. We have a link to the source code (“View source”) on each node page.

Here for example for the Airtable Node.

2 Likes

Very handy, thanks @jan!

Reviewed their documentation and can confirm this is true, what a silly design decision -

I think there is still a way around it though without having to loop in metadata API -

when submitting the object the API tells you what fields aren’t in the table so you could just parse the error and then accumulate those fields to remove on subsequent calls

Kind of a pain due to a single non-standard design decision on their part though :sweat_smile:

Reached out to Airtable support about this and linked to this thread

Hopefully they’ll come back with something helpful

1 Like

Update:

After speaking to Airtable support over several days it seems like there’s no way to solve this without the metadata API and the metadata API itself is designed to be used in closed-sourced integration services like Zapier or Integromat.

Kind of a shame, I really liked Airtable but I guess it’s time to move to NocoDB or some other database / CRM solution

That’s what I thought. I would consider Baserow as well. We have a Baserow node.

1 Like

Nice wasn’t aware of Baserow but it looks pretty good - thanks for sharing @RicardoE105

Hi there, I stumbled upon the same issue.

In my use case I could solve this by setting a little JS that returns a [null] instead of an [undefined] that would usually occure when there is no (empty) field returned from airtable. Maybe that could be useful for some people.

“carCategory”: “CAR”,
“vat”: “WITH”,
“tax”: “WITH”,
“vin”: “{{ $json?.fields?.[“VIN [S]”] ?? null;}}”