【GAS入門】条件付きで行を一括削除する方法

GASでスプレッドシートの行を条件付きで一括削除したいんですが…
猫男
猫男
catman
catman
よし、catmanが教えてやろう!GASでの行の削除は簡単だ。一緒にやってみよう。

GASで行を削除する基本的な方法

まずは、GASで行を削除する基本から始めよう。

基本的な行の削除

GASでは、スプレッドシートから特定の行を削除することが可能だ。

例えば、以下のコードを見てほしい。

function deleteActiveSheetRow() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rowIndex = 3;

  Logger.log(rowIndex + '行目を削除します');

  sheet.deleteRow(rowIndex);
}

このコードを実行すると、現在開いているシートの3行目が削除されるぞ。

deleteRow メソッドを使うことで、特定の行を削除できるんだな。

 

たとえば、次のようなシートがあったとする。

さっきのスクリプトを実行すると、こうなる。

 

gas スプレッドシート 行削除

 

あ、バナナがない!
猫男
猫男
catman
catman
そう、その通りだ。

 

GASで条件付きで行を削除する方法

条件に基づいて行を削除するには、まず条件に合致する行を見つけ、その行番号を取得する必要がある。

例として、特定の列が空白の場合に行を削除する方法を紹介しよう:

function deleteEmptyRowsInActiveSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();

  for (let i = data.length - 1; i >= 0; i--) {
    // 1列目が空白なら、その行を削除
    if (data[i][0] === '') {
      sheet.deleteRow(i + 1);
    }
  }
}

このスクリプトでは、現在表示中のシートの行を逆からチェックして、空白の行を一括削除することができる。

逆からチェックするのはなぜですか?
猫男
猫男
catman
catman
それは行を削除するとその後の行のインデックスがずれてしまうからさ。逆から削除すれば問題を避けられる。

 

 

たとえば、次のようなシートがあったとする。

gas スプレッドシート 行削除

さっきのスクリプトを実行すると、こうなる。

 

gas スプレッドシート 行削除

 

スッキリ!!
猫男
猫男
catman
catman
そう、その調子だ。

 

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。