Googleスプレッドシートでログや日次データを記録していると、同じキーのデータが複数行にわたって存在することがあります。
手動で削除すると手間がかかります。
本記事では、Google Apps Script(GAS)で重複データの削除処理を自動化する方法を解説します。
A列の上位を残し、下位の重複を削除
たとえば、以下のような重複データを用意します。
例(上位を残して削除)


上から順に見て最初に登場したデータを残し、それ以降の重複を削除します。
A列の下位を残し、上位の重複を削除
一番下の重複を残す場合、A列の降順ソートだけでは同じキーのうち最後の行を選べません。
removeDuplicates()の代わりに、下からキーを確認して削除対象を決めるコードを使います。


以下は実際のコード(自作関数)です。
- A列の上位を残し、下位の重複を削除
- A列の下位を残し、上位の重複を削除
- 1列目の2行目以降のデータを空にする
Googleスプレッドシートのほかの操作は、まとめから確認できます。

実行前にシートを複製してください。
このコードはアクティブなシートの行全体を削除します。
A・B列だけでなく、同じ行の別の列にも影響します。
1行目を見出し、2行目以降をデータとして扱います。
A列の表示文字列を大文字・小文字や空白も含めて完全一致で比較し、空のキーは残します。
数値と文字列でも表示が同じなら同じキーとして扱います。
上の関数群をApps Scriptへ貼り付け、最初の行を残すならremoveDuplicatesKeepFirst、最後の行を残すならremoveDuplicatesKeepLastを選んで実行します。
両方を続けて実行する必要はありません。
行が非表示でも判定対象に含まれます。
大量データでは行ごとの削除が実行時間の制限に達することがあるため、複製した少量データで結果を確認してから使ってください。
コード
A列の上位を残し、下位の重複を削除
function removeDuplicatesKeepFirst() {
deleteDuplicateKeyRows(false);
}
// 1行目は見出し。A列の表示文字列を完全一致で比較します。
function deleteDuplicateKeyRows(keepLast) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) return;
const keys = sheet.getRange(2, 1, lastRow - 1, 1).getDisplayValues();
const seen = new Set();
const remove = [];
for (let step = 0; step < keys.length; step++) {
const i = keepLast ? keys.length - 1 - step : step;
const key = keys[i][0];
if (key === '') continue; // 空のキーは削除しません
if (seen.has(key)) remove.push(i + 2);
else seen.add(key);
}
// 行番号のずれを防ぐため下から削除します。
remove.sort((a, b) => b - a).forEach(row => sheet.deleteRow(row));
}A列の下位を残し、上位の重複を削除
function removeDuplicatesKeepLast() {
// 上のdeleteDuplicateKeyRowsも同じプロジェクトへ貼り付けます。
deleteDuplicateKeyRows(true);
}1列目の2行目以降のデータを空にする
あわせて、データのクリア処理も解説します。
以下は、1列目の2行目以降のデータを空にする関数です。
function resetValue() {
const id = '★スプレッドシートID★';
const sheet = SpreadsheetApp.openById(id).getSheetByName('シート1');
if (!sheet) throw new Error('シート1が見つかりません');
const lastRow = sheet.getLastRow();
if (lastRow >= 2) sheet.getRange(2, 1, lastRow - 1, 1).clearContent();
}この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
シートのデータを整える方法は、ほかにも書いています。




まとめ
日々のログ記録やデータ集計時に重複データ処理を自動化すると、作業効率が向上します。
