Updating field in mutliple records with automation

Hi all,

I am working on an automated email unsubscriber that uses an email in a new view to trigger an automation to find all the records in the original data (same base) with the same email address. Once found the Field Unsubscribed should automatically be changed to: “Yes.” The issue arises, seemingly, when multiple records pop up with the same email. Theoritically, the automation should upate 1 record or a 100, but in practice I get an error on this - UPDATE step.

Pls advise what I should populate into the Record ID field of the automation. I’ve used the first option: “Make a new list of Record IDs” but that is the one that errored out.


P.S. the error is: “Received invalid inputs.”

No it shouldn’t. It is a feature we all want, but that is not how the action steps in Airtable’s automations are designed. The “Update record” step is singular for a reason: it is designed to update a single record.

If you need to update/create/delete multiple records you should pass the List of record IDs to a “Run a script” action instead. Scripts can perform batch updates while the “Update/Create a record” steps cannot.

Hi Kamille, thank you. Are you able to share a simple script that would update Field X with a new value: “Yes”?

I’d greatly appreciate it.


it’s possible to perform no-code solution, with other table linked to ‘data’ - you update a single record, linked field, and put your list of ID inside, ‘mark’ a number of records. Each record will get this link in it’s field.
Then second automation should do your action with every ‘marked’ record.
On my opinion, it’s worse option.

for scripting, here’s my template

const table=base.getTable('test1');const fl='Calculation'
const upd=await table.selectRecordsAsync({fields:[fl]}).then(q=>q.records.map(r=>({'id':r.id,'fields':{[fl]:'yes'}})))
while(upd.length) await table.updateRecordsAsync(upd.splice(0,50))

but you don’t need to await and select records (that part: await table.selectRecordsAsync({fields:[fl]}).then(q=>q.records.), you need to change it by array you get in previous step and access it via input.config()

1 Like

Alexey, thank you so much, though I must admit I was a bit overwhelmed with your answer and implementation is above my skillset.

I ended up using Zapier to accomplish the same task, by repeatedly looking for records that FAILED to meet my criteria in an AirTable view. After every record was marked, there were none left in the view that met the criteria, and all was right with the world.

Thank you @Kamille_Parks and @Alexey_Gusev for your help!