Google Apps Script (GAS) でシートの取得・追加・コピー・削除等の各種操作をする方法を説明します。

SpreadSheetクラスのメソッドを利用した手順について説明します。

Google Apps Scriptの基本的な使い方については下記をご覧ください。

Contents
  1. GASによるスプレッドシート操作の概要
  2. シートを取得する
  3. アクティブなシートのシート名を取得・変更する
  4. アクティブなシートのシートIDを取得する
  5. シートを追加する
  6. アクティブなシートを移動する
  7. アクティブなシートをコピーする
  8. シートを削除する
  9. まとめ

GASによるスプレッドシート操作の概要

GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。

クラス説明
SpreadSheetAppSpreadSheetサービスの親クラス
Spreadsheetスプレッドシートを操作するクラス
Sheetシートを操作するクラス
Rangeセル範囲を操作するクラス

それぞれ下記のような位置付けになります。

「SpreadSheetApp」→「SpreadSheet」→「Sheet」→「Range」という順の階層構造になっています。操作対象に応じて、下の階層にたどってオブジェクトを取得して利用します。

このページでは、上記の中のSpreadSheetクラスの下記のメソッドについて説明します。

メソッド戻り値説明
getSheetByName(name)Sheetシート名でシートを取得する
getSheets()Sheet[]すべてのシートを取得する
getSheetName()Stringアクティブなシートのシート名を取得する
renameActiveSheet(newName)voidアクティブなシートのシート名を変更する
getSheetId()IntegerアクティブなシートのシートIDを取得する
insertSheet()Sheetシートを追加する
insertSheet(sheetName)Sheet指定した名前でシートを追加する
insertSheet(sheetIndex)Sheet指定した位置にシートを追加する
insertSheet(sheetName, sheetIndex)Sheet指定した名前で指定した位置にシートを追加する
insertSheet(options)Sheetテンプレートをもとにシートを追加する
insertSheet(sheetName, options)Sheet指定した名前でテンプレートをもとにシートを追加する
insertSheet(sheetIndex, options)Sheet指定した位置にテンプレートをもとにシートを追加する
insertSheet(sheetName, sheetIndex, options)Sheet指定した名前で指定した位置にテンプレートをもとにシートを追加する
moveActiveSheet(pos)voidアクティブなシートを移動する
duplicateActiveSheet()Sheetアクティブなシートをコピーする
deleteActiveSheet()Sheetアクティブなシートを削除する
deleteSheet(sheet)void指定したシートを削除する

シートを取得する

スプレッドシートのシートを取得するメソッドを説明します。

シート名でシートを取得する:getSheetByName(name)

シートをシート名で取得するメソッドです。

下記のように実行します。

下記の実行結果になります。指定したシートを取得できます。

すべてのシートを取得する:getSheets()

シートをシート名で取得するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の実行結果になります。すべてのシートを取得できます。

アクティブなシートのシート名を取得・変更する

スプレッドシートのシート名を取得したり、変更したりするメソッドを説明します。

SpreadSheetクラスのメソッドではアクティブなシートのシート名の操作になります。

特定のシートに対して操作したい場合は、Sheetクラスのメソッドを利用するのが一般的です。

アクティブなシートのシート名を取得する:getSheetName()

アクティブなシートのシート名を取得するメソッドです。

下記のように実行します。

下記の実行結果になります。アクティブなシートのシート名を取得できます。

アクティブなシートのシート名を変更する:renameActiveSheet(newName)

アクティブなシートのシート名を変更するメソッドです。

下記のように実行します。
アクティブなシートのシート名を変更する前と後のシート名を表示しています。

下記の実行結果になります。シート名が変更されています。

アクティブなシートのシートIDを取得する

スプレッドシートのアクティブなシートのIDを取得するメソッドを説明します。

アクティブなシートのシートIDを取得する:getSheetId()

アクティブなシートのシートIDを取得するメソッドです。

シートIDとは、下記のURLのgid=の後にある番号のことです。
XXXXXXXXは、スプレッドシートIDです。

https://docs.google.com/spreadsheets/d/XXXXXXXX/edit#gid=2130772710

シートIDを利用してシートを取得するメソッドはないため、getSheetId()を利用したいケースはほとんど無いかもしれません。

下記のように実行します。

下記の実行結果になります。アクティブなシートのシートIDが出力されます。

シートを追加する

スプレッドシートのシートを追加するメソッドを説明します。

シートを追加する:insertSheet()

デフォルトのシート名でアクティブなシートの右側にシートを追加するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。アクティブなシートの右側にデフォルト名でシートが追加されます。

指定した名前でシートを追加する:insertSheet(sheetName)

指定したシート名でアクティブなシートの右側にシートを追加するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。アクティブなシートの右側に指定したシート名でシートが追加されます。

指定した位置にシートを追加する:insertSheet(sheetIndex)

デフォルトのシート名で指定した位置にシートを追加するメソッドです。

指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。指定した2番目のシートの右側に追加されます。

指定した名前で指定した位置にシートを追加する:insertSheet(sheetName, sheetIndex)

指定したシート名で指定した位置にシートを追加するメソッドです。

指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。指定したシート名で指定した位置に追加されます。

テンプレートをもとにシートを追加する:insertSheet(options)

指定したシートをテンプレートとしてシートを追加するメソッドです。
シート名はテンプレートをもとに自動で決められ、アクティブなシートの右側に追加されます。

下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。

下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。

実行すると、下記の結果になります。指定したテンプレートをベースにシート名が自動で決められ、アクティブなシートの右側にシートが追加されます。

指定した名前でテンプレートをもとにシートを追加する:insertSheet(sheetName, options)

指定したシートをテンプレートとしてシートを追加するメソッドです。
指定したシート名で、アクティブなシートの右側に追加されます。

下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。

下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。

実行すると、下記の結果になります。指定したシート名で、アクティブなシートの右側にシートが追加されます。

指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetIndex, options)

指定したシートをテンプレートとしてシートを追加するメソッドです。
シート名はテンプレートをもとに自動で決められ、指定した位置に追加されます。

指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。

下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。

下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。

実行すると、下記の結果になります。シート名はテンプレートをもとに自動で決められ、指定した位置にシートが追加されます。

指定した名前で指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetName, sheetIndex, options)

指定したシートをテンプレートとしてシートを追加するメソッドです。
指定したシート名で、指定した位置に追加されます。

指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。

下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。

下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。

実行すると、下記の結果になります。指定したシート名で、指定した位置にシートが追加されます。

アクティブなシートを移動する

スプレッドシートのアクティブなシートを移動するメソッドを説明します。

アクティブなシートを移動する:moveActiveSheet(pos)

アクティブなシートを指定した位置に移動するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。アクティブなシートが3番目に移動されます。

存在しない位置を引数に入れるとエラーになります。

アクティブなシートをコピーする

スプレッドシートのアクティブなシートをコピーするメソッドを説明します。

アクティブなシートをコピーする:duplicateActiveSheet()

アクティブなシートをコピーするメソッドです。
コピー後は、コピー後のシートがアクティブになります。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。右側にコピーされたシートができます。そして、コピーされたシートがアクティブになります。

シートを削除する

スプレッドシートのシートを削除するメソッドを説明します。

アクティブなシートを削除する:deleteActiveSheet()

アクティブなシートを削除するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。アクティブだったシートが削除され、右側のシートがアクティブになります。

指定したシートを削除する:deleteSheet(sheet)

指定したシートを削除するメソッドです。

下記のように実行します。

下記のファイルに対して実行すると、

下記の結果になります。指定した「シート2」が削除されます。

まとめ

Google Apps Script (GAS) でシートの取得・追加・コピー・削除等の各種操作をする方法を説明しました。

GASは無料で利用できてとても便利なツールです。

Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます。

GASの基本構文を知りたい方は、下記もご覧ください。