スプレッドシートの不要な行を削除するGoogle Apps Scriptです。行がいつの間にか数万行に増えてしまっている・・・よくありますよね。
特にありません。今お使いのスプレッドシートに組み込めます。
サンプルとして、約40万行のシートを用意してみました。
上のメニューにある「スクリプト実行」から「シート上の不要な行を削除する」を実行します。
何行目以降を削除するのかを聞かれますので、数字を入力します。
入力された行までが残り、次の行から最終行までが削除されます。
指定した行までが残り、以降の行が削除されました!
シートの最終行もしくはそれを超える値を入力すると「このシートにはN行までしか存在しないため、実行できません。」というエラーメッセージが出てスクリプトが終了します。
行を選択してから「Shift + Command + ↓」(Shift + Ctrl + ↓)で最終行まで一気に選択できるので、これで消したほうが早いですね・・・。
せっかくコードを書いたので一応公開しました。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00067/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('シート上の不要な行を削除する', 'delete_unnecessary_rows');
// メニューを画面に追加する
menu.addToUi();
}
function delete_unnecessary_rows() {
// 現在開いているスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 現在開いているシートを取得
const sheet = ss.getActiveSheet();
// シート上の最終行を取得
const last_row = sheet.getMaxRows();
// ポップアップウィンドウで最終行を入力してもらうため、UIを取得
const ui = SpreadsheetApp.getUi();
// 何行目を最後に、不要な行を消すか入力させる
const response = ui.prompt('不要な行を削除します。削除後の最終行を指定してください\n(100と入れた場合は101行目以降が削除されます)', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (response.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// 入力された行数を数値型で受け取る
const delete_start_row = Number(response.getResponseText());
// 入力された行数が存在する行数より大きい場合は処理できないため、エラーメッセージを表示してスクリプトを終了する
if (delete_start_row >= last_row){
ui.alert('このシートには' + last_row + '行までしか存在しないため、実行できません。');
return;
}
// 入力された行を起点に、シート上の最終行まで削除する
sheet.deleteRows(delete_start_row + 1, last_row - delete_start_row);
}
シート内の「何も書き込まれていない行」を削除してくれるGoogle Apps Scriptです。スプレッドシートをメモ帳代わりにしていると、特に意味のない空白行がたくさんあったりして、消すのが面倒だったので作成してみました。すべての列に何も文字が入っていない行を消し去ります。
1行ごとに任意の空白行を挿入してくれるGoogle Apps Scriptです。データを整理中に「今ある行の間に1行ずつ足したい・・・」ということが稀によくあるので作成しました。追加する行数はプロンプトで指定が可能です。
スプレッドシートのセル数上限に対して、どのぐらい使用しているのかを確認できるGoogle Apps Scriptです。シート単位の使用数も出るので肥大化しているシートもわかります。