はじめに
こんにちは。
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の力を最大限に活用し、効率的なデータ管理を目指しましょう。