GASでスプレッドシートの重複データ行を削除するには「removeDuplicates()
」を利用する。
removeDuplicates()
前の行の値と重複する値を含む、この範囲内の行を削除します。値が同一であるが、大文字と小文字、書式設定、または数式が異なる行は、重複していると見なされます。このメソッドは、ビューから非表示になっている重複行も削除します (たとえば、フィルターが原因で)。この範囲外のコンテンツは削除されません。
https://developers.google.com/apps-script/reference/spreadsheet/range#removeduplicates
スプレッドシートの重複データ行を削除するGAS実行の様子
removeDuplicates()メソッドを利用して、スプレッドシートの重複データ行を削除するGASを実行してみました。
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】スプレッドシート内で検索を行う