LoginSignup
0
0

[Google Sheets API] 重複した行を削除する

Last updated at Posted at 2024-02-21

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列のみ一致)
 

C列とF列の値が同じ行(4,5行目)のみが削除されました。
 


おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0