スプレッドシート データ内の重複する行を削除するために使用できる Google Apps Script ライブラリを 作成します。
目標
- スクリプトを設定する。
- スクリプトを実行する。
前提条件
このサンプルを使用するには、次の前提条件を満たしている必要があります。
- Google アカウント(Google Workspace アカウントの場合、管理者の承認が必要となる可能性があります)。
- インターネットにアクセスできるウェブブラウザ。
スクリプトを設定する
ライブラリを作成する手順は次のとおりです。
- Google アカウントにログインします。
- スクリプト エディタを開くには、 script.google.com にアクセスします。
- 左上の [新しいプロジェクト] をクリックします。
スクリプト エディタ内のコードを削除して、次のコードを貼り付けます。
[Save]
をクリックします。
左上の [無題のプロジェクト] をクリックします。
スクリプトに「Remove duplicate rows 」という名前を付けて、[名前を変更] をクリックします。
[Deploy] [>] [New deployment] をクリックします。
[種類の選択] の横にある [デプロイタイプを有効にする]
> [ライブラリ] をクリックします。
ライブラリの説明を入力します(例: Remove duplicate rows )。ライブラリにアクセスできるユーザーは、この説明を表示できます。
[デプロイ] をクリックします。
左側の [プロジェクトの設定]
をクリックします。
[ID] で、後のステップで使用するスクリプト ID をコピーします。
スクリプトを実行する
ライブラリを使用するには、その Apps Script プロジェクトに対する表示権限が少なくとも必要です。ライブラリを作成したユーザーには、ライブラリを使用するために必要な権限が付与されます。他のユーザーがライブラリを使用できるようにするには、Apps Script プロジェクトに対する閲覧権限を付与します。
ライブラリを使用する手順は次のとおりです。
- 重複する行を含むデータがある Google スプレッドシートを開きます。サンプル スプレッドシートを使用するには、Sample duplicate rowsスプレッドシートのコピーを作成します。
- [拡張機能] > [Apps Script] をクリックします。
- [ライブラリ] の横にある [ライブラリを追加] をクリックします。
- [スクリプト ID] セクションに、前のセクションでコピーしたライブラリ Apps Script プロジェクトのスクリプト ID を貼り付けます。
- [Look up] をクリックします。
- [バージョン] セクションで [1] を選択します。
- [追加] をクリックします。
スクリプト エディタ内のコードを削除して、次のコードを貼り付けます。
function runLibrary() { Removeduplicaterows.removeDuplicates(); }関数プルダウンで [runLibrary] を選択します。
[実行] をクリックします。
スプレッドシートに戻り、重複する行のない更新されたデータを表示します。
コードを確認する
このソリューションの Apps Script コードを確認するには、 [ソースコードを表示] をクリックします。
ソースコードの表示
まず、スクリプトはスプレッドシートに 1 回呼び出しを行い、すべてのデータを取得します。シートを 1 行ずつ読み取ることもできますが、JavaScript オペレーションは、スプレッドシートなどの他のサービスとの通信よりも大幅に高速です。呼び出し回数が少ないほど、処理が速くなります。各スクリプトの実行時間は最大 6 分であるため、これは重要です。
変数 data は、シート内のすべての値を含む JavaScript の 2 次元配列です。newData は、スクリプトが重複しないすべての行を配置する空の配列です。
最初の for ループは、data 2 次元配列の各行を反復処理します。各行について、2 番目のループは、一致するデータを持つ別の行が newData 配列にすでに存在するかどうかをテストします。重複していない場合、行は newData 配列にプッシュされます。
最後に、スクリプトはシートの既存のコンテンツを削除し、newData 配列のコンテンツを挿入します。
修正
ライブラリは、必要に応じて何度でも編集できます。次のセクションでは、省略可能な変更について説明します。
一部の列で一致するデータを含む行を削除する
完全に一致する行を削除するのではなく、1 つまたは 2 つの列で一致するデータを含む行を削除したい場合があります。これを行うには、条件ステートメントを変更します。
サンプルコードで、次の行を更新します。
if(row.join() == newData[j].join()){ duplicate = true; }
この行を次のコードに置き換えます。
if(row[0] == newData[j][0] && row[1] == newData[j][1]){ duplicate = true; }
上記の条件ステートメントでは、シートの 1 列目と 2 列目に同じデータが 2 行あるたびに重複が検出されます。
寄稿者
このサンプルは、Google デベロッパー エキスパートの Romain Vialard が作成しました。Romain の Twitter アカウントは @romain_vialardです。
このサンプルは、Google デベロッパー エキスパートの協力のもと、Google によって管理されています。