Google Sheets API v4(Java)を使用して、
スプレットシートの重複した行を削除する方法
についてご紹介します。
メニュー:「データ」 ⇨ 「データ クリーンアップ」 ⇨ 「重複を削除」
で実行できる内容と同じです。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する
を参照ください。
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
その他のGoogle Sheets APIは、下記の記事を参照ください。
⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた
No | 目次 | |
---|---|---|
1 | 重複した行の削除 | |
1 | 行全体が重複 | |
2 | 指定した列の値が重複 |
1. 重複した行の削除
列の値が同じ行を削除できます。
・行全体が重複している場合
・指定した列の値のみが重複している場合
の削除が指定できます。
1.1. 行全体が重複
指定した範囲の行が重複している場合、1行を残して他の重複行を削除します。
サンプル コード
シートを指定して重複行を削除します。
セルの範囲を指定して重複行を削除することもできます。
public Request deleteDuplicates(Integer sheetId) {
Request request = new Request();
GridRange range = new GridRange();
range.setSheetId(sheetId); //重複行を削除するシートID
//範囲を指定した場合は、指定範囲のみが対象となります。
// range.setStartRowIndex(0); //開始行(0スタート)
// range.setEndRowIndex(4); //終了行(0スタート)
// range.setStartColumnIndex(0); //開始列(0スタート))
// range.setEndColumnIndex(4); //終了列(0スタート)
DeleteDuplicatesRequest r = new DeleteDuplicatesRequest();
r.setRange(range);
request.setDeleteDuplicates(r);
return request;
}
実行結果
画像の選択した箇所が重複しています。
重複した行が1行のみ残して削除されました。
次は範囲を指定して実行してみました
指定した範囲の重複行のみが削除されました。
指定した範囲外の下の表もそのままです。
1.2. 指定した列の値が重複
指定した列の値が一致した場合に同一行とみなします。
サンプル コード
C列、F列の値が同じ行を同一行とみなして削除します。
public Request deleteDuplicates(Integer sheetId) {
Request request = new Request();
GridRange range = new GridRange();
range.setSheetId(sheetId); //重複行を削除するシートID
//列の指定
List<DimensionRange> columns = new ArrayList<>();
DimensionRange column1 = new DimensionRange();
column1.setSheetId(sheetId);
column1.setDimension("COLUMNS"); //COLUMNSのみ指定可能
column1.setStartIndex(2); //開始位置(0スタート)
column1.setEndIndex(3); //終了位置(1スタート)
columns.add(column1);
DimensionRange column2 = new DimensionRange();
column2.setSheetId(sheetId);
column2.setDimension("COLUMNS"); //COLUMNSのみ指定可能
column2.setStartIndex(5); //開始位置(0スタート)
column2.setEndIndex(6); //終了位置(1スタート)
columns.add(column2);
DeleteDuplicatesRequest r = new DeleteDuplicatesRequest();
r.setComparisonColumns(columns);
r.setRange(range);
request.setDeleteDuplicates(r);
return request;
}
実行結果
画像の選択したセル(C列,F列)が重複しています。(3行目はC列のみ一致)
おしまい。。