Batch-Update Airtable Records Without Hitting Limits

Roadblock: updateRecordsAsync fails the moment you pass more than 50 records. Chunk the updates and await each batch — the pattern every Airtable script eventually needs.

The Snippet

// Airtable scripting block — updateRecordsAsync caps at 50 records
const table = base.getTable("Contacts");
const query = await table.selectRecordsAsync({ fields: ["Status"] });
const updates = query.records.map((r) => ({
  id: r.id,
  fields: { Status: "Reviewed" },
}));
for (let i = 0; i < updates.length; i += 50) {
  await table.updateRecordsAsync(updates.slice(i, i + 50));
}

Implementation Steps

  1. Build the full updates array first
  2. Slice it into batches of 50
  3. Await each updateRecordsAsync call in order

All templates