スプレッドシートの全てのシートを一括削除する方法(Google Apps Script)
Googleスプレッドシートにあるシートは通常操作では1つずつしか削除することができません。
Google Apps Script(GAS)を活用すると、簡単に全てのシートの一括削除が可能です。
今回、スプレッドシートの複数シートを一括で削除するGASのソースコードと使い方を紹介します。
スプレッドシートのシート削除は1つずつ
Googleスプレッドシートではシートを削除するには1度に1つのシートしか削除することができません。
1.削除したいシートを右クリックし、「削除」を選択します。
2.削除してもよいか確認メッセージが表示されるので、OKボタンをクリックします。
上記2Stepでスプレッドシートの1つのシートを削除するには、3クリック必要です。
削除対象のシートが少ないときは手動削除で問題ありませんが、削除するシート数が増えるにつれ、負担が大きくなります。
Google Apps Scriptならシートの一括削除可能
先程も紹介した通り、通常のスプレッドシートの機能では、複数のシートを一度に削除することは不可能です。
しかし、Google Apps Script(GAS)を使えば、通常操作ではできないシートを一括削除できます。
GAS(ガスと呼びます)はエクセルで言うところのマクロのような機能で、スプレッドシートの標準機能として備わっています。
処理したい動作をコードとして記述することで、スプレッドシートの複雑な処理も可能になります。
シートの一括削除であれば、とても簡単に実装することができます。
GASのdeleteSheetメソッドでシート削除
Google Apps Script(GAS)では、SpreadsheetAppクラスにあるdeleteSheetメソッドでシート削除することができます。
deleteSheetメソッドで括弧内の引数としてシートを指定することで、スプレッドシートのシート削除が可能です。
GASでシートを一括削除するサンプルコード
しかし、自分でシートを一括削除するGoogle Apps Script(GAS)のコードを書くのは大変です。
そこで、どんなスプレッドシートにも導入可能なシート一括削除のGASサンプルコードを用意しました。
このサンプルコードを導入・設定するだけでシート一括削除が可能になります。
シート一括削除のGASサンプルコード
スプレッドシートに存在するシートを一括削除するGASのサンプルコードは以下のコードです。
//削除除外シートor末尾のシート1つを残して、すべてのシートを削除する関数
function deleteALLSheets() {
//あらかじめ削除したくないシート名を記載してください。例「["シート1","シート5","シート10"]」
const notDelSheet = ["削除したいシート名を入力してください"];
// 現在アクティブなスプレッドシートを取得
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//取得したスプレッドシートにある全てのシートを配列として取得
let sheetData = mySheet.getSheets();
//末尾のシートを削除するかを決めるフラグ
let flag =0;
//forループでシートを削除する削除を行う
for(i=0;i<sheetData.length;i++){
//削除したくないシート存在しない場合、末尾のシートは削除せずスキップする
if(flag ==0 && i == sheetData.length-1){
break;
}
//削除対象から除外するシートにヒットした場合は、削除処理は行わず、フラグを立てる
if(notDelSheet.indexOf(sheetData[i].getSheetName()) != -1){
flag = 1;
}
//削除除外シートではない場合は、削除処理を実行する
else{
mySheet.deleteSheet(sheetData[i]);
}
}
}
サンプルコードのスプレッドシート導入・実行方法
シートを一括削除するGASのサンプルコードをスプレッドシートに導入する手順を解説していきます。
1.メニュー「ツール」から「スクリプトエディタ」を選択します。
2.Google Apps Scriptのエディタ画面で、先程のサンプルコードをコピー&ペーストします。
3.「Ctrl + s」で保存し、プロジェクト名(※無題のプロジェクトでOK)でOKボタンをクリックします。
以上の3Stepでシートを一括削除するGASのサンプルコードの導入は完了です。
シート一括削除のGAS実行方法
続いて導入が完了したGASによるスプレッドシートのシート一括削除を実行する方法を解説します。
1.赤線部が「deleteALLSheet」であることを確認し、▶の実行ボタンをクリックします。
2.認証が求められるメッセージが表示されるので、「許可を確認」ボタンをクリックします。
※英語で表示されるケースがあるので、その場合は適宜読み替えてください。
3.Googleアカウントが表示されるので、自分のアカウントを選択します。
4.「このアプリは確認されていません」と表示されるので、「詳細」リンクをクリック、表示される「無題のプロジェクト(安全ではないページ)に移動」をクリックします。
5.スプレッドシートへのアクセス許可のリクエストが表示されるので、「許可」ボタンをクリックします。
以上の5Stepでシート一括削除を実行することができます。
スプレッドシートのシートを一度に削除するGASコードを実行すると、末尾のシートを残して、全て削除されます。
なお、実行手順の2~5は、初回のみ必要で以降は不要です。
特定シートを削除対象外とするには?
なお、GASのコードで末尾のシートを除いてすべて削除されると、削除したくないシートまで削除されてしまいます。
削除したくない場合には、GASコードの4行目にある箇所で、削除対象外のシート名を入力します。
今回は、シート2とシート5という名称のシートは削除対象外とします。
ここに削除対象外のシート名を指定した状態で、GASコードを実行すると、指定したシートを除いて削除されます。
削除対象外が指定されている場合は、末尾のシートも削除されるようになります。
まとめ・終わりに
今回、スプレッドシートの複数のシートを一括で削除する方法を紹介しました。
残念ながら、スプレッドシートの通常操作ではシートを1つずつしか削除できません。
Google Apps Script(GAS)でコードを書くことで、一括で削除することが可能です。
今回、どんなスプレッドシートにも導入可能なシート一括削除のGASサンプルコードを用意しました。
シート削除が面倒な方は、ぜひ導入手順・実行手順に従ってサンプルコードを利用してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません