I’m having some difficulty properly using the Airtable update action. The key issue is that the way n8n builds the request to the Airtable API when you have “update all fields” enabled on the node is it looks each field in the input data and adds it to request body. This is fine but if you’re updating you also need the record id. So if I include the record id with the data in my workflow to keep things simple, it causes the Airtable update node to fail because it naively adds the “id” field to the request, but there is no field “id” on the table, I need to use it for the Id parameter on the node.
Based on this, I don’t see how it’s possible to use the “update all fields” option without intentionally removing the ID in some previous node, and then referencing that node directly from the Id parameter in an expression.
I suppose one solution would be, in addition to the option of specifically choosing which fields to use, give an option to choose fields to ignore. This way you could keep all the data together in the workflow and choose to ignore the id field for the fields to update, and use it directly from the input data in the Id paramter. Right now I would have to manually add every single field except the id field as ones I want to include, which is tedious when you have many fields. This approach completes succesfully but never actually updates the data in Airtable, but I don’t know if it’s an Airtable issue or an n8n issue. When I build a request manually and send it with curl, Airtable does update correctly.
Another option could be to treat a field of “id” as a reserved name and automatically use that as the ID for the request, but that’s also problematic if you actually do have a field called “id” on your table.
Am I missing anything here? Is the correct way to use the Airtable update action to remove the ID in a previous step, and then reference some other nod that happens to have that data for the Id parameter? I would share a workflow but I haven’t yet got this approach to work.