セル範囲を操作する

【GAS】スプレッドシートの重複データ行を削除する

GASでスプレッドシートの重複データ行を削除するには「removeDuplicates()」を利用する。

removeDuplicates()

前の行の値と重複する値を含む、この範囲内の行を削除します。値が同一であるが、大文字と小文字、書式設定、または数式が異なる行は、重複していると見なされます。このメソッドは、ビューから非表示になっている重複行も削除します (たとえば、フィルターが原因で)。この範囲外のコンテンツは削除されません。

https://developers.google.com/apps-script/reference/spreadsheet/range#removeduplicates

スプレッドシートの重複データ行を削除するGAS実行の様子

removeDuplicates()メソッドを利用して、スプレッドシートの重複データ行を削除するGASを実行してみました。

removeDuplicates()
removeDuplicates()を実行した様子

2~4行目の重複データが、removeDuplicatesを実行後に削除され2行目のみが残っていることがわかります。

getActiveRange()スプレッドシートの選択された範囲を取得する場合は、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートの選択された範囲を取得する

スプレッドシートの重複データ行を削除するGAS

function removeDuplicates(){
  //SpreadsheetApp起動
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  //0番目のシートを選択
  let sht = ss.getSheets()[0];
 //見出しと重複データを作成
  for(let i=2;i<=4;i++){
    let midashi = [
      ["項目","内容","備考"] //見出し
    ];
    let text = [
      ["Spread","Sheet",".Blue"], //重複データ
    ]
    sht.getRange(1,1,1,3).setValues(midashi);
    sht.getRange(i,1,1,3).setValues(text);
  }
 
 //yesnoで作業確認
  const yesno = Browser.msgBox("重複行を削除しますか?",Browser.Buttons.YES_NO);
 //yesなら
  if(yesno == "yes"){
    let lastrw = sht.getLastRow(); //ラスト行取得
    let lastcl = sht.getLastColumn(); //ラスト列取得
    let rng = sht.getRange(2,1,lastrw,lastcl); //データ入力範囲を選択
    //■removeDuplicates()で重複データを削除
    rng.removeDuplicates(); 
    Browser.msgBox("重複行を削除しました"); //作業内容を掲載
  }else{
    Browser.msgBox("重複行はそのままです"); //作業内容を掲載
  }
}

removeDuplicates()の戻り値

Range— 重複を削除した結果の範囲。範囲のサイズは、削除される行ごとに行ごとに縮小されます。

スプレッドシートの重複データ行を削除するまとめ

GAS×スプレッドシートの重複データ行を削除するならremoveDuplicates()メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートで指定した行・列のセル範囲を取得する

関連記事:【GAS】スプレッドシートの最終行を取得する

関連記事:【GAS】スプレッドシートの最終列を取得する

関連記事:【GAS】スプレッドシート内で検索を行う

-セル範囲を操作する