Google Apps Script(GAS)でスプレッドシートのシートを削除する方法(deleteSheet)
Google Apps Script(GAS)では、スプレッドシートに対し様々処理を行うことが可能です。
今回、GASでスプレッドシートに存在するシートを削除する方法を解説していきます。
GASでスプレッドシートのシート削除
Googleスプレッドシートに関する操作は、殆どのものがGoogle Apps Script(GAS)で処理自動化することができます。
新しくスプレッドシートファイルを作成することはもちろん、シート追加・コピーに加え、存在するシートを削除するといった処理も可能です。
deleteSheetメソッドでシートを削除
Google Apps Script(GAS)では、SpreadsheetAppクラスにあるdeleteSheetメソッドでシート削除することができます。
SpreadsheetApp.getActiveSpreadsheet.deleteSheet(Sheet sheet)
deleteSheetメソッドで引数として削除したいシートを指定することで、スプレッドシートのシート削除が可能です。
シートを削除するGASサンプルコード
実際にGoogle Apps Script(GAS)でコードを書いてスプレッドシートに属するシートを削除するサンプルコードを紹介したいと思います。
//シートを削除する関数
function delSheetTest() {
// 現在アクティブなスプレッドシートを取得
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//取得したスプレッドシートでシート名を入力し、削除したいシートを取得
let delSheet = mySheet.getSheetByName("削除したいシート");
//deleteSheetメソッドでシート削除を実行
mySheet.deleteSheet(delSheet);
}
このスプレッドシートのシートを削除するスクリプトを実行すると、「削除したいシート」という名前のシートが削除されます。
なお、アクティブなシートを削除する「deleteActiveSheet」というメソッドがあり、こちらでも削除は可能です。
//アクティブなシートを削除する関数
function delSheetTest() {
// 現在アクティブなスプレッドシートを取得
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//deleteActiveSheetメソッドでシート削除を実行
mySheet.deleteActiveSheet();
}
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プログラムでは削除して大量生成を防ぎましょう。
ディスカッション
コメント一覧
まだ、コメントがありません