Google Apps Script(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)

deleteSheetメソッドで引数として削除したいシートを指定することで、スプレッドシートのシート削除が可能です。

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

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

Google Apps Script(GAS)でスプレッドシートのシートを削除するサンプルコード

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

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

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

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

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

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

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

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

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

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

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

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

https://auto-worker.com/blog/?p=1329

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

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

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

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

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

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

まとめ・終わりに

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

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

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

シートを自動的に作成するGASプログラムでは削除して大量生成を防ぎましょう。