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)
スクリプトに紐づくスプレッドシートまたはスクリプトIDからSpreadsheetオブジェクトを生成します。
Spreadsheetオブジェクトで実行可能なdeleteSheetメソッドで、引数として削除したいシートを指定することで、スプレッドシートのシート削除が可能です。
シートを削除するGASサンプルコード
実際にGoogle Apps Script(GAS)でスプレッドシートに属するシートを削除するサンプルコードを解説したいと思います。
スプレッドシートに紐づくコンテナバインドスクリプトで、10行にも満たないGASコードでシート削除が可能です。
//シートを削除する関数
function delSheetTest() {
// 現在アクティブなスプレッドシートを取得
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//取得したスプレッドシートでシート名を入力し、削除したいシートを取得
let delSheet = mySheet.getSheetByName("削除したいシート");
//deleteSheetメソッドでシート削除を実行
mySheet.deleteSheet(delSheet);
}
まずスクリプトに紐づいているスプレッドシートをgetActiveSpreadsheetメソッドで取得します。
次にgetSheetByNameメソッドでスプレッドシートから削除したいシート名を引数に指定してシートを取得します。
最後にdeleteSheetメソッドで削除対象のシートを引数にすることで、シートの削除できます。
実際にこのスプレッドシートのシートを削除するGASスクリプトを実行すると、「削除したいシート」という名前のシートが削除されます。
なお、アクティブなシートを削除する「deleteActiveSheet」というメソッドがあり、こちらでも削除は可能です。
//アクティブなシートを削除する関数
function delSheetTest() {
// 現在アクティブなスプレッドシートを取得
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//deleteActiveSheetメソッドでシート削除を実行
mySheet.deleteActiveSheet();
}
deleteActiveSheetの場合、削除シートを引数で指定する必要がないため、よりシンプルなコードになります。
ただし、アクティブなシートが何かわからないため、誤って削除したくないシートを削除する恐れがあります。
そのため、あまりdeleteActiveSheetの使用はオススメしません。
複数シートを削除したい場合は?
前述のGASで書いたサンプルコードはdeleteSheetメソッドで引数に指定した1つのシートを削除するものでした。
複数シートを一括で削除したいケースには下記の記事を参照ください。
スプレッドシートで複数シートを一括削除するGASスクリプトを解説しています。
スプレッドシートにシートは最低1個は必要
なお、GASでスプレッドシートにあるシートを削除しようとしても、エラーが出て処理が失敗するケースがあります。
その場合に、「」というエラーメッセージが出ている場合には、スプレッドシートには削除対象のシート1つしかなく、削除するとシートが0になるためエラーしています。
スプレッドシートのシートは最低1つ以上存在している必要があり、削除する際には2つのシートがない状態でないと実行できません。
例えば、1つのシートしかないスプレッドシートでGASによってシートを削除し、新しくシートを作成するといった処理の場合では、シート削除ではなく、シート作成を先に実行しましょう。
まとめ・終わりに
今回Google Apps Script(GAS)でスプレッドシートのシートを削除する方法を解説しました。
GASのdeleteSheetメソッドでシートを指定することでシートを削除することができます。
ただし、スプレッドシートには最低1つのシートが必要なので、シートが1つしかない場合は処理がエラーします。
スプレッドシートの自動化処理の中でシートを削除したいシーンも出てくるので、そうした場合に今回紹介したGASのサンプルコードを活用ください。
ディスカッション
コメント一覧
まだ、コメントがありません