【GAS】行の自動削除テクニック!

最終更新日:

はじめに

こんにちは。
GAS Automation(ガスオートメーション)小谷です。

スプレッドシートで作成した膨大なリストから、
まとめて行を削除したい時。

手動で行をひとつずつ選択して、
削除するのは手間がかかり、
ちょっと効率が悪そうです。。。

今回はそんなお悩みを、解決し効率化を目指します。

GASとは何か

Google Apps Script(GAS)は、
Googleアプリケーションの機能を拡張したり、
カスタマイズしたりするためのスクリプト言語です。

主にGoogleの各アプリケーションと連携して、
独自の機能や自動化を実現することができます。

必要なファイル・準備

Google スプレッドシート
行を削除するスプレッドシートを作成します。(今回は株式投資の企業分析で使用されているシートを例にご紹介します。)

画像のように、B列にコードが入っていない行( 4行, 6行, 7行, 9行)
を全て削除します。


拡張機能からApps Scriptを開きます。

行を削除するサンプルコード

function deleteRow(){
  // スプレッドシート、アクティブシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();
  const codes = sheet.getRange("B3:B" + sheet.getLastRow()).getValues(); 

 // 1つずつ行を検索して、B列の値が空の行を削除
  for (let i = codes.length - 1; i >= 0; i--) {
    if (!codes[i][0]) { 
      sheet.deleteRow(i + 3); // +3 はB3から開始するため(1-2行は対象外にしたいため)
    }
  }
}

現在アクティブなスプレッドシート(作業中のシート)を取得して、sheetという変数に格納します。

 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

sheetの最後の行番号を取得して、lastRowという変数に格納します。

シートのB列の3行目から最後の行までの範囲を取得します。

.getValues()メソッドでその範囲の値を二次元配列として取得し、codesという変数に格納します。

 const lastRow = sheet.getLastRow();
const codes = sheet.getRange("B3:B" + sheet.getLastRow()).getValues();

最後の行からループで回して、B列の値が空の行を削除

  for (let i = codes.length - 1; i >= 0; i--) { //最後の行から逆順に、各行の値を確認するためのforループ
    if (!codes[i][0]) { // B列のi行目の値が空であるかどうかを確認し、B列に値が存在しない場合、条件式がtrueとなり、以下の命令が実行されます。
      sheet.deleteRow(i + 3); // 空の値が見つかった場合、その行を削除します。i + 3としているのは、codes配列がB3から始まっているためです。(1-2行は対象外にしたいため)
    }
  }

まとめと注意点

GASを活用することで、
スプレッドシートの日常的なデータ整理作業が格段に効率化されます。

特に空の行の自動削除は、
データの見た目をきれいに保つだけでなく、
分析作業をスムーズに進める上でも非常に役立ちます。

ただし、自動削除を行う際には、
データのバックアップを欠かさないよう注意が必要です。

GASの力を最大限に活用し、効率的なデータ管理を目指しましょう。

目次