スプレッドシートの全てのシートを一括削除する方法(Google Apps Script)

Googleスプレッドシートにあるシートは通常操作では1つずつしか削除することができません。

Google Apps Script(GAS)を活用すると、簡単に全てのシートの一括削除が可能です。

今回、スプレッドシートの複数シートを一括で削除するGASのソースコードと使い方を紹介します。

スプレッドシートのシート削除は1つずつ

Googleスプレッドシートではシートを削除するには1度に1つのシートしか削除することができません。

1.削除したいシートを右クリックし、「削除」を選択します。

スプレッドシートのシートを削除する方法~シートを右クリックして削除を選択する

2.削除してもよいか確認メッセージが表示されるので、OKボタンをクリックします。

スプレッドシートのシートを削除するとメッセージが表示されるので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のエディタ画面で、先程のサンプルコードをコピー&ペーストします。

スプレッドシートからGoogle Apps Scriptのスクリプトエディタが開くので、サンプルコードをコピペする

3.「Ctrl + s」で保存し、プロジェクト名(※無題のプロジェクトでOK)でOKボタンをクリックします。

GASのサンプルコードを保存する際に、プロジェクト名を保存する

以上の3Stepでシートを一括削除するGASのサンプルコードの導入は完了です。

シート一括削除のGAS実行方法

続いて導入が完了したGASによるスプレッドシートのシート一括削除を実行する方法を解説します。

1.赤線部が「deleteALLSheet」であることを確認し、▶の実行ボタンをクリックします。

スプレッドシートのシートを一括削除するGASの関数deleteAllSheetを実行する

2.認証が求められるメッセージが表示されるので、「許可を確認」ボタンをクリックします。

Google Apps Script(GAS)の実行許可に関するメッセージ

※英語で表示されるケースがあるので、その場合は適宜読み替えてください。

3.Googleアカウントが表示されるので、自分のアカウントを選択します。

GAS実行時には自分のアカウントを選択します

4.「このアプリは確認されていません」と表示されるので、「詳細」リンクをクリック、表示される「無題のプロジェクト(安全ではないページ)に移動」をクリックします。

「このアプリは確認されていません」というメッセージが表示されるので、「詳細」リンクをクリックします。

安全ではありませんのリンクをクリック

5.スプレッドシートへのアクセス許可のリクエストが表示されるので、「許可」ボタンをクリックします。

GAS実行時にスプレッドシートへのアクセス権限が求められるので、許可をクリックする

以上の5Stepでシート一括削除を実行することができます。

スプレッドシートの一括削除実行前のファイル

スプレッドシートのシートを一度に削除するGASコードを実行すると、末尾のシートを残して、全て削除されます。

スプレッドシートの一括削除実行後の、シートが削除されたファイル

なお、実行手順の2~5は、初回のみ必要で以降は不要です。

特定シートを削除対象外とするには?

なお、GASのコードで末尾のシートを除いてすべて削除されると、削除したくないシートまで削除されてしまいます。

削除したくない場合には、GASコードの4行目にある箇所で、削除対象外のシート名を入力します。

スプレッドシートのシートを一括削除するGoogle Apps Scriptのコードで、特定のシートを削除対象外とする

今回は、シート2とシート5という名称のシートは削除対象外とします。

ここに削除対象外のシート名を指定した状態で、GASコードを実行すると、指定したシートを除いて削除されます。

削除対象外のシートを除いて削除が実行されたスプレッドシートの結果

削除対象外が指定されている場合は、末尾のシートも削除されるようになります。

まとめ・終わりに

今回、スプレッドシートの複数のシートを一括で削除する方法を紹介しました。

残念ながら、スプレッドシートの通常操作ではシートを1つずつしか削除できません。

Google Apps Script(GAS)でコードを書くことで、一括で削除することが可能です。

今回、どんなスプレッドシートにも導入可能なシート一括削除のGASサンプルコードを用意しました。

シート削除が面倒な方は、ぜひ導入手順・実行手順に従ってサンプルコードを利用してみてください。