Airtableを使ってデータ管理をしていると、同じデータが重複して登録されてしまうことがあります。特に、最新のデータだけを残して古いものを削除したいというケースは多いのではないでしょうか?
そこで今回は、AirtableのScripting Appを使って、重複データの中から最新の1件を残し、古いデータを削除する方法を解説します。

やりたいこと
この記事を読むことで、以下のことができるようになります:
- AirtableのScripting Appを利用して、特定のテキストフィールド(例:「【貼り付け用】従業員コード」)を基準に重複をチェックする
- 作成日が最新の1件のみを残し、古いデータを自動削除する
- スクリプトを使って定期的にデータクレンジングを自動化する
スクリプトの概要
このスクリプトは、Airtableの「Scripting App」を使って以下の手順で動作します。
- Airtableのテーブル(例:「勤怠」)の全レコードを取得
- 「【貼り付け用】従業員コード」ごとにデータをグループ化
- 作成日が最新の1件のみを残し、それより古いデータを削除
- 不要なデータを削除してクリーンなデータ管理を実現
Airtableスクリプト
// テーブルの取得
let table = base.getTable("勤怠");
// フィールド名の設定(適宜変更)
let employeeCodeField = "【貼り付け用】従業員コード"; // ここを基準に重複チェック
let createdDateField = "作成日"; // 作成日
// 全レコードを取得
let query = await table.selectRecordsAsync({ fields: [employeeCodeField, createdDateField] });
// 従業員ごとのレコードを管理するマップ
let recordsByEmployee = new Map();
// 各レコードをループして、従業員コードごとにグループ化
for (let record of query.records) {
let employeeCode = record.getCellValue(employeeCodeField);
let createdDateRaw = record.getCellValue(createdDateField);
if (!employeeCode || !createdDateRaw) {
continue; // データが不完全な場合はスキップ
}
let createdDate = new Date(createdDateRaw);
if (isNaN(createdDate.getTime())) {
console.log(`無効な作成日: ${createdDateRaw} - レコードID: ${record.id}`);
continue;
}
// マップに保存(リストとして管理)
if (!recordsByEmployee.has(employeeCode)) {
recordsByEmployee.set(employeeCode, []);
}
recordsByEmployee.get(employeeCode).push({ recordId: record.id, createdDate: createdDate });
}
// 削除対象のレコードを格納する配列
let recordsToDelete = [];
// 最新の1件だけを残し、残りは削除リストに追加
recordsByEmployee.forEach((records, employeeCode) => {
// 作成日で降順ソート(最新のものが最初に来る)
records.sort((a, b) => b.createdDate - a.createdDate);
// 最新の1件を除いたものを削除リストに追加
let latestRecord = records.shift(); // 先頭を取得し、それ以外を削除対象にする
recordsToDelete.push(...records.map(r => r.recordId));
});
// 削除処理(最大50件ずつ)
while (recordsToDelete.length > 0) {
let batch = recordsToDelete.splice(0, 50);
console.log(`削除するレコード:`, batch);
await table.deleteRecordsAsync(batch);
}
output.text("古いレコードが削除されました ✅");
手順:スクリプトの実行方法
- Airtableの「Extensions」から「Scripting App」を追加
- スクリプトを貼り付けて「Run」ボタンをクリック
- 不要なデータが削除され、最新の1件のみが残る!
注意点
- 「【貼り付け用】従業員コード」のフィールド名が正しく設定されているか確認してください
- 「作成日」のデータ型が「日付型」になっていることを確認してください(文字列型の場合は適宜変換)
- 削除対象のレコードは「50件ずつ削除」することでAirtableの制約を回避
まとめ
この記事では、Airtableのスクリプトを活用して、最新の1件を残して古いデータを削除する方法を解説しました。
このスクリプトを活用することで、
✅ データの重複を自動削除
✅ 最新のデータのみを保持
✅ データクレンジングの自動化 が可能になります!
Airtableでのデータ管理をもっと便利にするために、ぜひ活用してみてください!🚀