GASでスプレッドシートのシートを削除する方法(deleteSheet)

2020年8月5日

Google Apps Script(GAS)では、スプレッドシートに対し様々処理を行うことが可能です。

シート追加や複製などに加え、存在しているシートをスプレッドシートから削除することもできます。

今回、GASでスプレッドシートに存在するシートを削除する方法を解説していきます。

GASでスプレッドシートのシート削除

Googleスプレッドシートに関する操作は、殆どのものがGoogle Apps Script(GAS)で処理自動化することができます。

スプレッドシートのシートを削除するのは、Google Apps Scriptでも実行可能

新しくスプレッドシートファイルを作成することはもちろん、シート追加・コピーに加え、存在するシートを削除するといった処理も可能です。

deleteSheetメソッドでシートを削除

Google Apps Script(GAS)では、SpreadsheetAppクラスにあるdeleteSheetメソッドでシート削除することができます。

SpreadsheetApp.getActiveSpreadsheet.deleteSheet(Sheet sheet)

スクリプトに紐づくスプレッドシートまたはスクリプトIDからSpreadsheetオブジェクトを生成します。

Spreadsheetオブジェクトで実行可能なdeleteSheetメソッドで、引数として削除したいシートを指定することで、スプレッドシートのシート削除が可能です。

シートを削除するGASサンプルコード

実際にGoogle Apps Script(GAS)でスプレッドシートに属するシートを削除するサンプルコードを解説したいと思います。

スプレッドシートに紐づくコンテナバインドスクリプトで、10行にも満たないGASコードでシート削除が可能です。

Google Apps Script(GAS)でスプレッドシートのシートを削除するサンプルコード
//シートを削除する関数
function delSheetTest() {
  // 現在アクティブなスプレッドシートを取得
  let mySheet = SpreadsheetApp.getActiveSpreadsheet();
  //取得したスプレッドシートでシート名を入力し、削除したいシートを取得
  let delSheet = mySheet.getSheetByName("削除したいシート");
  //deleteSheetメソッドでシート削除を実行
  mySheet.deleteSheet(delSheet);
}

まずスクリプトに紐づいているスプレッドシートをgetActiveSpreadsheetメソッドで取得します。

次にgetSheetByNameメソッドでスプレッドシートから削除したいシート名を引数に指定してシートを取得します。

最後にdeleteSheetメソッドで削除対象のシートを引数にすることで、シートの削除できます。

実際にこのスプレッドシートのシートを削除するGASスクリプトを実行すると、「削除したいシート」という名前のシートが削除されます。

Google Apps Script(GAS)でシート削除のスクリプトを実行した結果

なお、アクティブなシートを削除する「deleteActiveSheet」というメソッドがあり、こちらでも削除は可能です。

//アクティブなシートを削除する関数
function delSheetTest() {
  // 現在アクティブなスプレッドシートを取得
  let mySheet = SpreadsheetApp.getActiveSpreadsheet();
  //deleteActiveSheetメソッドでシート削除を実行
  mySheet.deleteActiveSheet();
}

deleteActiveSheetの場合、削除シートを引数で指定する必要がないため、よりシンプルなコードになります。

ただし、アクティブなシートが何かわからないため、誤って削除したくないシートを削除する恐れがあります。

Google Apps Script(GAS)のdeleteActiveSheetだとどのシートが削除されるかわからない点が注意

そのため、あまりdeleteActiveSheetの使用はオススメしません。

複数シートを削除したい場合は?

前述のGASで書いたサンプルコードはdeleteSheetメソッドで引数に指定した1つのシートを削除するものでした。

複数シートを一括で削除したいケースには下記の記事を参照ください。

スプレッドシートで複数シートを一括削除するGASスクリプトを解説しています。

スプレッドシートにシートは最低1個は必要

なお、GASでスプレッドシートにあるシートを削除しようとしても、エラーが出て処理が失敗するケースがあります。

その場合に、「」というエラーメッセージが出ている場合には、スプレッドシートには削除対象のシート1つしかなく、削除するとシートが0になるためエラーしています。

スプレッドシートのシートは最低1つ以上存在している必要があり、削除する際には2つのシートがない状態でないと実行できません。

例えば、1つのシートしかないスプレッドシートでGASによってシートを削除し、新しくシートを作成するといった処理の場合では、シート削除ではなく、シート作成を先に実行しましょう。

まとめ・終わりに

今回Google Apps Script(GAS)でスプレッドシートのシートを削除する方法を解説しました。

GASのdeleteSheetメソッドでシートを指定することでシートを削除することができます。

ただし、スプレッドシートには最低1つのシートが必要なので、シートが1つしかない場合は処理がエラーします。

スプレッドシートの自動化処理の中でシートを削除したいシーンも出てくるので、そうした場合に今回紹介したGASのサンプルコードを活用ください。