ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptで行を削除!特定条件の行を一括削除

【Googleスプレッドシート】Apps Scriptで行を削除!特定条件の行を一括削除
🛡️ 超解決

大量のデータが並んだスプレッドシートで、特定の条件に合う行だけを手動で削除する作業は時間がかかり、ミスも発生しやすいものです。しかし、GoogleスプレッドシートのApps Scriptを使えば、条件に基づいて行を一括削除できるため、作業効率が大幅に向上します。この記事では、基本的なスクリプトの書き方から、実際の削除手順、注意点までを詳しく解説します。初めてスクリプトに触れる方でも、コピー&ペーストでそのまま使えるコードを用意していますので、ぜひ試してみてください。

【要点】Apps Scriptで特定条件の行を一括削除する方法

  • スクリプトエディタを開いてコードを貼り付ける: メニューから拡張機能→Apps Scriptを開き、用意した関数を記述することで削除処理を自動化します。
  • 条件を指定して削除する行を決める: 列の値や空白セルなど、任意の条件をif文で記述し、該当する行だけを削除できます。
  • 実行ボタンまたはトリガーで一括削除を実行する: 手動で実行するほか、時間指定のトリガーを設定すれば定期的な整理も可能です。

ADVERTISEMENT

Apps Scriptで行を削除する機能の概要

Apps ScriptはGoogleスプレッドシートを自動操作するためのJavaScriptベースのスクリプト環境です。スプレッドシート内のデータをプログラムで処理できるため、手作業では時間のかかる繰り返し作業を正確かつ高速にこなせます。行の削除にはSpreadsheetサービスのdeleteRow(rowPosition)やdeleteRows(rowPosition, howMany)メソッドを使います。条件に合わせてループ処理を組み合わせることで、特定の値を持つ行や空白行などをまとめて削除できます。スクリプトを実行するにはスプレッドシートの編集権限が必要です。また、大量のデータを処理する場合、Googleの実行制限(最大30分など)に注意する必要があります。

特定条件の行を一括削除する手順

基本的なスクリプトの作成と実行

  1. Apps Scriptエディタを開く
    削除したいスプレッドシートを開き、メニューの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
  2. プロジェクト名を変更する(任意)
    左上の「無題のプロジェクト」をクリックして、わかりやすい名前(例:「行削除スクリプト」)に変更してください。
  3. コードを記述する
    エディタに以下のサンプルコードを貼り付けます。この例ではA列が空白の行をすべて削除します。
    function deleteBlankRows() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var data = sheet.getDataRange().getValues();
    var rowsToDelete = [];
    for (var i = data.length - 1; i >= 0; i--) {
    if (data[i][0] === '') {
    rowsToDelete.push(i + 1);
    }
    }
    for (var j = 0; j < rowsToDelete.length; j++) {
    sheet.deleteRow(rowsToDelete[j]);
    }
    }
  4. スクリプトを保存する
    Ctrl+S(MacならCmd+S)またはフロッピーディスクアイコンをクリックして保存します。初回はプロジェクト名の確認が表示されます。
  5. スクリプトを実行する
    ツールバーの実行ボタン(▶)をクリックします。初回は権限の承認を求められるので、「権限を確認」→許可します。処理が完了すると完了のダイアログが表示されます。

条件をカスタマイズする方法

上のサンプルではA列が空白の行を削除しました。条件を変更するには、if文内の条件式を書き換えます。例えば、B列の値が「完了」の行を削除したい場合は、if (data[i][1] === '完了')とします。数値の比較や複数条件の組み合わせも可能です。

削除する列を指定する応用例

  1. 特定の文字列を含む行を削除する
    部分一致で削除したい場合は、indexOfメソッドを使います。if (data[i][0].indexOf('削除') !== -1)と記述すると、A列に「削除」を含む行を削除します。
  2. 日付が古い行を削除する
    日付列を比較する場合、データが正しく日付型として取得されている必要があります。例として、A列が30日以上前の行を削除するには、if (data[i][0] < new Date(Date.now() - 30*24*60*60*1000))のようにします。
  3. 複数条件を組み合わせる
    AND条件は&&、OR条件は||で結びます。例えば、A列が空でB列が「未対応」の行を削除するには、if (data[i][0] === '' && data[i][1] === '未対応')とします。

注意点とよくある失敗

削除したデータは元に戻せない

Apps Scriptによる削除は、スプレッドシートの編集履歴に残りますが、元のデータを復元するには「編集」→「元に戻す」を実行するしかありません。大量の行を削除した場合は元に戻せない可能性があるため、必ず事前にシートのコピーを取ってから実行してください。

実行制限に引っかかる

Apps Scriptには実行時間制限(最大30分)や1日のトリガー実行回数制限があります。数千行以上のデータを処理する場合は、一度に削除する行数を制限するか、バッチ処理を検討してください。また、ループ内で毎回deleteRowを呼び出すと遅くなるため、削除する行をまとめて配列に格納して逆順に削除する方法が効率的です。

スクリプトエディタの権限エラー

スクリプトを初めて実行する際に「このアプリは確認されていません」という警告が表示されることがあります。これはGoogleのセキュリティポリシーによるもので、自分が作成したスクリプトであれば問題なく実行できます。「詳細」→「安全ではないページに移動」をクリックして権限を許可してください。ただし、組織のアカウントでは管理者の承認が必要な場合があります。

ADVERTISEMENT

手動削除とApps Scriptの比較

項目 手動削除 Apps Script
作業速度 遅い(1行ずつ操作) 速い(一括処理)
正確性 ミスが発生しやすい 条件通りに確実に削除
再現性 毎回同じ作業が必要 スクリプトを保存して繰り返し使える
複雑な条件 目視で判断するため困難 自由に条件をプログラミング可能
データ損失リスク 低い(1行ずつ確認) 高い(大量削除のためバックアップ必須)

まとめ

Apps Scriptを使えば、スプレッドシート内の特定条件の行を一括で削除でき、手作業の負担を大幅に減らせます。基本的なスクリプトの書き方を覚えれば、空白行の削除から複数条件の組み合わせまで自由にカスタマイズできます。ただし、削除操作は元に戻せないため、必ずバックアップを取ってから実行してください。さらに応用として、削除後にメール通知を送る処理や、別シートに退避する機能を追加することも可能です。ぜひ自分の業務に合わせたスクリプトを作成してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。