GASでスプレッドシートの新しいシートを追加・挿入する方法(insertSheetメソッド)
Google Apps Script(GAS)でスプレッドシートに新しいシートを追加する方法を解説します。
GASに用意されているinsertSheetメソッドを使い、スプレッドシート上に新しいシートを追加挿入する処理がスクリプトで実装できます。
GASでスプレッドシートのシートを新規追加
スプレッドシートを処理するGoogle Apps Script(GAS)のスクリプトを開発していると、シートを新規追加する必要がでてきます。
例えば、毎月のレポートを自動で生成する際に、月が変わったタイミングで、新規シートを作成します。
毎月のレポートごとに新しいシートが追加され、そこに数値の表を出力していきます。
このようにGASでスプレッドシートを用いた処理を実装する中で、新規でシートを追加・挿入する処理が求められます。
そうした処理が必要なことを想定し、GASにはスプレッドシートで新しいシートを追加する方法が用意されています。
insertSheetメソッドで新しいシートを追加挿入
Google Apps Scriptでスプレッドシートの新しいシートを追加するために、「insertSheetメソッド」が用意されています。
Spreadsheet.insertSheet();
insertSheetメソッドはスプレッドシートのクラスであるSpreadsheetオブジェクトで実行できるメソッドです。
引数不要でinsertSheetメソッドを実行すると、実行したスプレッドシートオブジェクトにシートが追加されます。
シートの追加自体は、insertSheetメソッドを実行するだけで1行のGASコードで実装可能です。
GASのinsertSheetでシート追加時は名前も要設定
なお、GASでシートを追加した際の注意ポイントがあります。
insertSheetメソッドで追加したシート名は、スプレッドシートでシートを追加した際と同様に、「シート○」という名称で生成されます。
GASスクリプト処理でシートを追加挿入しているうちにデフォルトの名称だとわかりにくくなります。
そのため、insertSheetメソッドを使った際には、setNameメソッドでシート名を設定しましょう。
シートを新規追加するGASサンプルコード
実際にGoogle Apps Scriptで、スプレッドシートに新しいシートを追加する方法を、サンプルコードで解説します。
関数の定義からシートを追加する処理の記述内容を解説するコメントを含め、8行の簡単なコードです。
function addSheet() {
//コンテナバインド型で紐付いたスプレッドシートを読み込む
let mySheet = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートに新しいシートを追加挿入
let newSheet = mySheet.insertSheet();
//追加挿入したシートに名前を設定
newSheet.setName("GAS追加シート");
}
スプレッドシートを読み込んだものに対し、insertSheetメソッドを実行し、シートを新規追加します。
そのままだと、「シート*」のような名称になってしまうので、追加したシートに対してsetNameで名前を設定します。
シートを追加挿入するGASサンプルコードを実行すると、スプレッドシートに「GAS追加シート」の新しいシートが追加されていることが確認できます。
まとめ・終わりに
今回、Google Apps Scriptでスプレッドシートに新しいシートを追加挿入する方法を紹介しました。
GASにはシート追加するinsertSheetメソッドが用意されており、簡単に新規シートの挿入が可能です。
実行するたびに特定のスプレッドシートに新規シートを作成し、そこに数値や文字を出力するようなGASの処理でシート追加のinsertSheetを活用しましょう。
ディスカッション
コメント一覧
既にある既存のシートをコピーして特定の時間で自動生成する場合上記のコードに何を足せばよいのでしょうか?
yui様
Google Apps Script(GAS)で既存のシートをコピーしたい場合は、以下の記事にあるcopyToメソッドを使用します。
https://auto-worker.com/blog/?p=2401
特定時間で自動生成する部分は、GASのトリガー実行で、希望するタイミングでスクリプトを実行するようにすれば可能と思います。