今回はGoogle Apps Scriptで指定したシート以外を削除し、1シートだけ残す方法についてご紹介します。
スプレッドシートによるツールを開発する際、マスタシートとそこから起動して生成されるシートがある場合に、
マスタシートは残して生成されたシートはいったん削除したい場合などに便利です。
指定したシート以外を全て削除する
スクリプトを作成する前に、まず下記のようなスプレッドシートを用意します。
その上で、下記のサンプル1を元にご紹介していきます。
・サンプル1
function myFunction() { var SPREADSHEET_ID = ‘[ここにスプレッドシートのIDを記載]’; //スプレッドシートのIDを指定 SpreadsheetApp.setActiveSheet(sheet); //指定したシート名をアクティブシートにする ash.moveActiveSheet(1); //アクティブシートを1番左へ移動 for(var i = cnt; i >= 2; i–){ //初期値の変数iはシート数を表す変数cnt、iをー1していき2以上の間は処理を繰り返し var sh = ash.getSheets()[i-1]; //アクティブなスプレッドシートに存在するシートを、[i-1]により配列の要素数で指定して取得し、変数shに代入 |
上記のサンプル1ですが、まず、
var SPREADSHEET_ID = ‘[ここにスプレッドシートのIDを記載]’;
で対象のスプレッドシートのIDを指定し、
var SHEET_NAME = ‘シート2’;
で今回残したいシートの名前を指定します(今回は「シート2」を残す事とします)
var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
では、先ほど宣言した変数SPREADSHEET_IDとSHEET_NAMEを使い、残したいシートとシートが存在するスプレッドシートを定義します。
var ash = SpreadsheetApp.getActiveSpreadsheet();
では、アクティブなスプレッドシートを取得し、
var cnt = ash.getNumSheets();
で、アクティブなスプレッドシートに存在するシート数を取得します。
SpreadsheetApp.setActiveSheet(sheet);
では、先ほど指定したシート名をアクティブシートにし、
ash.moveActiveSheet(1);
で、アクティブシートを1番左へ移動します。
for(var i = cnt; i >= 2; i–){
ですが、初期値の変数iはシート数を表す変数cntとし(今回は3になります)、処理を繰り返す毎に変数iをー1していき、変数iが2以上の間は処理を繰り返します。
var sh = ash.getSheets()[i-1];
では、アクティブなスプレッドシートに存在するシートを、[i-1]により配列の要素数で指定して取得し、変数shに代入し、
ash.deleteSheet(sh);
でシートを削除します。
今回の例では、ash.getSheets()[2]とash.getSheets()[1]が削除され、一番左のシートであるash.getSheets()[0]は残るという形になります。
※スプレッドシートIDの取得方法などについてはこちらの記事をご参照ください。