初心者必見!GASを使って条件付きで行を一括削除する方法


GASで行を削除する基本
まずは、GASで行を削除する基本から始めよう。スプレッドシートのデータを扱う際には、必要に応じて行を削除するスキルが重要だ。
基本的な行の削除
GASでは、スプレッドシートから特定の行を削除することが可能だ。例えば、以下のコードを見てほしい:
function deleteRow(sheet, rowIndex) {
sheet.deleteRow(rowIndex);
}
ここの deleteRow メソッドを使うことで、特定の行を削除することができる。
条件付きで行を削除
条件に基づいて行を削除するには、まず条件に合致する行を見つけ、その行番号を取得する必要がある。
例として、特定の列が空白の場合に行を削除する方法を紹介しよう:
function deleteEmptyRows(sheet) {
const data = sheet.getDataRange().getValues();
for (let i = data.length - 1; i >= 0; i--) {
if (data[i][0] === '') { // ここでは1列目の値が空白かチェックしている
sheet.deleteRow(i + 1);
}
}
}
このスクリプトでは、スプレッドシートの行を逆からチェックして、空白の行を一括削除することができる。


二次元配列での行の削除
配列のデータを使ってスプレッドシートの内容を操作する場合も多い。ここでは、二次元配列から行を削除する方法を見ていこう。
二次元配列の行削除のサンプル
ある条件に合う行を削除するには、こうしたスクリプトが有効だ:
function removeRowsWithCondition(data, columnIndex) {
return data.filter(row => row[columnIndex] !== ''); // 条件に合わない行のみを残す
}
この filter メソッドを使えば、条件でフィルタをかけ、必要な行のみを二次元配列として残せる。
最終行までの削除
特定の条件を元に、スプレッドシートの最終行まで削除する方法を見てみよう。
最終行まで削除するスクリプト例
最終行まで操作を行う場合は、以下の方法が定番だ。
function deleteRowsToEnd(sheet, startRow) {
const lastRow = sheet.getLastRow();
for (let i = lastRow; i >= startRow; i--) {
sheet.deleteRow(i);
}
}
このスクリプトは、指定した開始行から最終行までの行を削除する。


練習問題
以下の練習問題をやってみよう!
1. 特定の値が “DELETE” である行をスプレッドシートから削除するスクリプトを書いてみてください。
2. 二次元配列から “0” を含む全ての行を削除する関数を作成してください。
解答・解説
function deleteRowsWithSpecificValue(sheet, columnIndex) {
const data = sheet.getDataRange().getValues();
for (let i = data.length - 1; i >= 0; i--) {
if (data[i][columnIndex] === 'DELETE') {
sheet.deleteRow(i + 1);
}
}
}
このスクリプトは、指定した列に “DELETE” がある行を削除する。ループを逆方向にすることで、行インデックスのずれを防ぐ。
function removeRowsWithZero(data) {
return data.filter(row => !row.includes(0));
}
この関数は二次元配列から “0” を含む行を全てフィルタし、残された行を返す。「includes」メソッドを使って配列に指定の値が含まれるか確認する方法だ。