スプレッドシートで特定の列に特定の値が入っている行を削除したくて書いたコードです
例として
- 2行目から下に見ていき
- B列に "重複" という値が入っている場合
- その列を削除する
以下に例示したコードは筆者の環境で実行した時に書いたものなので、あくまで参考程度のものとしてみてください
行が誤って削除された場合も変更履歴から復元できるケースもありますが、削除する場合は充分テストをしてから実行することをオススメします
コード.gs
function delete_duplication(){ var sh = SpreadsheetApp.openByUrl(SS_URL).getSheets()[0]; var last_row = sh.getLastRow(); for(var i = 2; i < last_row; i++){ var range = sh.getRange("B"+ i); var value = range.getDisplayValue(); if(value == "重複"){ var start_row = i; var num_row = 1; sh.deleteRows(start_row, num_row); i = i - 1; } } } |
意訳この機能がやること シートを取得して(例では開いているシートの先頭にあるシート) データが入っている最終行を取得して 2行目から最終行まで以下を繰り返す B列を見て 表示されている値を取得して "重複"なら その行から 1行分を指定して 行を削除する i の値を元に戻す("重複"の行が連続する場合、削除後に1行分上にずれるため、同じ行を見に行かないとズレた行が"重複"の場合にその行を削除できない) |
関連記事
シートの行を削除する
シートの列内の重複データを見つける関数
参考
deleteRows(rowPosition, howMany)
https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteRows(Integer,Integer)
deleteRows(rowPosition, howMany)
https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteRows(Integer,Integer)