2022/04/12に更新

【GASで時短】シートの不要な行を削除する

スプレッドシート

スプレッドシートの不要な行を削除するGoogle Apps Scriptです。行がいつの間にか数万行に増えてしまっている・・・よくありますよね。

こんな悩みを解決します


  • いつの間にかシートに大量の行が・・・行を選択して消すのがめんどくさい。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • シートの不要な行を削除することができます。
  • 削除する範囲はポップアップウィンドウで指定することができます。

使い方


1.スクリプトの実行

サンプルとして、約40万行のシートを用意してみました。

上のメニューにある「スクリプト実行」から「シート上の不要な行を削除する」を実行します。

2.行数の指定

何行目以降を削除するのかを聞かれますので、数字を入力します。
入力された行までが残り、次の行から最終行までが削除されます。

3.結果の確認

指定した行までが残り、以降の行が削除されました!

4.エラーメッセージ

シートの最終行もしくはそれを超える値を入力すると「このシートにはN行までしか存在しないため、実行できません。」というエラーメッセージが出てスクリプトが終了します。

5.あとから気づいたんですが・・・

行を選択してから「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);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp