2022/04/01に更新

【GASで時短】アクティブシート以外の全シートを削除する

スプレッドシート

現在開いているシート以外の全てのシートを削除するGoogle Apps Scriptです。自動的にシートを大量生成したけどやり直したいときなどに。

こんな悩みを解決します


  • 大量にあるシートを削除したくなったけど死ぬほどめんどくさいからなんとかしたい。

用意するもの


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

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


  • 現在開いているアクティブなシート以外の、全てのシートを削除することができます。
  • 削除処理の前には本当に実行してよいのか確認してくれます。

使い方


1.データの準備

サンプルとして、適当にシートを量産してみました。

2.スクリプトの実行

上のメニューに有る「スクリプト実行」から「アクティブシート以外の全シートを削除」を実行します。

3.実行の確認

削除を実行してもよいのか聞かれます。問題なければOKを押します。

4.結果の確認

選択中だった「シート29」以外のシートが全て消え去りました!

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00062/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('アクティブシート以外の全シートを削除', 'delete_non_active_sheets');

  // メニューを画面に追加する
  menu.addToUi();
}


function delete_non_active_sheets() {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // 現在開いているスプレッドシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 実行を確認する
  const response = ui.alert('アクティブシート以外のシートをすべて削除します。\nよろしいですか?', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response == ui.Button.CANCEL) {
    return;
  }

  // スプレッドシートに存在するすべてのシートを取得
  const sheets = ss.getSheets();

  // 現在開いているアクティブなシートの名前を取得する
  const active_sheet_name = ss.getActiveSheet().getSheetName();

  // ループで1シートずつ処理していく
  for (let i = 0; i < sheets.length; i++) {

    // シートの名前を取得する
    let sheet_name = sheets[i].getSheetName();

    // シート名がアクティブなシート名と一致しなければ、削除を実行する
    if(sheet_name != active_sheet_name){
      ss.deleteSheet(sheets[i]);
    }
  }
}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp