【保存版】GASでスプレッドシートの重複削除を自動化する方法|初心者向けスクリプトも公開!

「スプレッドシートに同じデータが何度も登録されて困っている…」
「手作業で重複を探して消すのが面倒すぎる!」

そんな悩みを一発で解決してくれるのが、Google Apps Script(GAS)を使った重複削除の自動化です。

この記事では、初心者でもできる「GASでスプレッドシートの重複を自動検出&削除する方法」を、
サンプルコードとともにわかりやすく解説します!


1. なぜスプレッドシートの重複削除を自動化すべきか?

スプレッドシートを使っていると、気づかないうちにこんな問題が起きがちです。

  • 同じ顧客情報が2回登録される

  • データ取り込みで重複行ができる

  • 手動で探して消すのが手間+ミスが出る

これを放置すると、
データの信頼性が下がり、業務効率もガタ落ちします。

しかしGASを使えば、

  • 重複を即時検出

  • ワンクリックで自動削除

  • スケジュール実行も可能

と、スプレッドシートを常にクリーンな状態に保てます!


2. 【基本知識】GASで重複を削除する仕組みとは?

GASでは、

  • スプレッドシートのデータを一括で取得

  • 一意(ユニーク)なデータだけ残す

  • 重複データを除去して上書きする

という流れで重複削除を実現します。

特別なライブラリは不要!
標準機能だけでできるのが魅力です。


3. 【準備編】自動化に必要なものはこれだけ!

  • Googleアカウント

  • Googleスプレッドシート(整理したいデータ)

  • Google Apps Script(標準搭載)

すべて無料&クラウドで完結。
今日からすぐに始められます!


4. 【実装編】GASでスプレッドシートの重複を自動削除する方法

さっそく、実際に動かせるスクリプトを書いていきましょう!


ステップ① Apps Scriptエディタを開く

スプレッドシート上部メニュー
「拡張機能」→「Apps Script」→「新しいプロジェクトを作成」


ステップ② 自動重複削除スクリプトを書く

サンプルコード(シンプル版)

function removeDuplicates() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getDataRange();
  const values = range.getValues();
  
  const uniqueValues = [];
  const seen = new Set();
  
  for (let i = 0; i < values.length; i++) {
    const row = values[i].join(); // 1行を文字列化して比較
    if (!seen.has(row)) {
      seen.add(row);
      uniqueValues.push(values[i]);
    }
  }
  
  // シートをクリアして一意データだけ書き込み
  sheet.clearContents();
  sheet.getRange(1, 1, uniqueValues.length, uniqueValues[0].length).setValues(uniqueValues);
}

このスクリプトを実行すれば、

  • スプレッドシート全体から重複行を検出

  • 一意データだけ残して上書き

という流れが一発でできます!


5. 【応用編】さらに柔軟な重複削除を実現する


✅ 特定の列だけで重複判定する

例えば、「メールアドレス列だけを見て重複を消したい」場合。

function removeDuplicatesByColumn() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getDataRange();
  const values = range.getValues();
  
  const uniqueValues = [];
  const seenEmails = new Set();
  
  for (let i = 0; i < values.length; i++) {
    const email = values[i][1]; // 2列目(B列)を対象
    if (!seenEmails.has(email)) {
      seenEmails.add(email);
      uniqueValues.push(values[i]);
    }
  }
  
  sheet.clearContents();
  sheet.getRange(1, 1, uniqueValues.length, uniqueValues[0].length).setValues(uniqueValues);
}

✅ 重複行だけをハイライトする(削除せず可視化)

いきなり削除するのが不安な場合は、
まず重複行だけ色を付けてチェックするのもおすすめ!

function highlightDuplicates() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getDataRange();
  const values = range.getValues();
  
  const seen = new Set();
  
  for (let i = 0; i < values.length; i++) {
    const row = values[i].join();
    if (seen.has(row)) {
      sheet.getRange(i + 1, 1, 1, values[i].length).setBackground('pink');
    } else {
      seen.add(row);
    }
  }
}

これなら、目視チェック→安心して削除という流れができます!


6. 【運用編】安定運用するためのポイント


✔️ 最初は必ずバックアップを取る

スクリプトミスで大事なデータを失わないため、最初はバックアップ必須!


✔️ テスト用シートで動作確認

いきなり本番シートで実行しない!まずはテストデータで挙動をチェック。


✔️ トリガー設定で定期的に自動実行

スプレッドシートが更新されるたびに自動で重複整理したい場合は、
GASのトリガー機能で「時間主導型(毎日1回)」など設定するのがおすすめ!


7. まとめ|GASでスプレッドシートの重複削除を自動化して、データ管理を次のレベルへ!

手作業での重複チェック&削除はもう卒業!
GASを使えば、

  • クリック一発で重複整理

  • データ品質向上

  • 作業工数大幅削減

が実現します。

まずはこの記事で紹介した基本スクリプトを動かしてみて、
慣れてきたら「特定列のみ判定」「重複可視化→手動チェック」など、
自分の運用スタイルに合った形にカスタマイズしていきましょう!

Shop now