Google Apps Script (GAS) でシートの取得・追加・コピー・削除等の各種操作をする方法を説明します。
SpreadSheetクラスのメソッドを利用した手順について説明します。
Google Apps Scriptの基本的な使い方については下記をご覧ください。
- GASによるスプレッドシート操作の概要
- シートを取得する
- アクティブなシートのシート名を取得・変更する
- アクティブなシートのシートIDを取得する
- シートを追加する
- シートを追加する:insertSheet()
- 指定した名前でシートを追加する:insertSheet(sheetName)
- 指定した位置にシートを追加する:insertSheet(sheetIndex)
- 指定した名前で指定した位置にシートを追加する:insertSheet(sheetName, sheetIndex)
- テンプレートをもとにシートを追加する:insertSheet(options)
- 指定した名前でテンプレートをもとにシートを追加する:insertSheet(sheetName, options)
- 指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetIndex, options)
- 指定した名前で指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetName, sheetIndex, options)
- アクティブなシートを移動する
- アクティブなシートをコピーする
- シートを削除する
- まとめ
GASによるスプレッドシート操作の概要
GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。
クラス | 説明 |
---|---|
SpreadSheetApp | SpreadSheetサービスの親クラス |
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)
シートをシート名で取得するメソッドです。
下記のように実行します。
1 2 3 4 5 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート2"); //シート名で取得 console.log(testSheet.getSheetName()); } |
下記の実行結果になります。指定したシートを取得できます。
1 |
シート2 |
すべてのシートを取得する:getSheets()
シートをシート名で取得するメソッドです。
下記のように実行します。
1 2 3 4 5 6 7 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheets(); //すべてのシートを取得 for (const sheet of testSheet) { console.log(sheet.getSheetName()); } } |
下記のファイルに対して実行すると、
下記の実行結果になります。すべてのシートを取得できます。
1 2 3 |
シート1 シート2 シート3 |
アクティブなシートのシート名を取得・変更する
スプレッドシートのシート名を取得したり、変更したりするメソッドを説明します。
SpreadSheetクラスのメソッドではアクティブなシートのシート名の操作になります。
特定のシートに対して操作したい場合は、Sheetクラスのメソッドを利用するのが一般的です。
アクティブなシートのシート名を取得する:getSheetName()
アクティブなシートのシート名を取得するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getSheetName()); } |
下記の実行結果になります。アクティブなシートのシート名を取得できます。
1 |
シート1 |
アクティブなシートのシート名を変更する:renameActiveSheet(newName)
アクティブなシートのシート名を変更するメソッドです。
下記のように実行します。
アクティブなシートのシート名を変更する前と後のシート名を表示しています。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getActiveSheet().getSheetName()); //アクティブなシートの名前を表示 testSpreadSheet.renameActiveSheet("変更後"); //シート名を変更 console.log(testSpreadSheet.getActiveSheet().getSheetName()); //アクティブなシートの名前を表示 } |
下記の実行結果になります。シート名が変更されています。
1 2 |
シート1 変更後 |
アクティブなシートのシートIDを取得する
スプレッドシートのアクティブなシートのIDを取得するメソッドを説明します。
アクティブなシートのシートIDを取得する:getSheetId()
アクティブなシートのシートIDを取得するメソッドです。
シートIDとは、下記のURLのgid=の後にある番号のことです。
XXXXXXXXは、スプレッドシートIDです。
https://docs.google.com/spreadsheets/d/XXXXXXXX/edit#gid=2130772710
シートIDを利用してシートを取得するメソッドはないため、getSheetId()を利用したいケースはほとんど無いかもしれません。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getSheetId()); //シートIDを取得 } |
下記の実行結果になります。アクティブなシートのシートIDが出力されます。
1 |
2130772710 |
シートを追加する
スプレッドシートのシートを追加するメソッドを説明します。
シートを追加する:insertSheet()
デフォルトのシート名でアクティブなシートの右側にシートを追加するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.insertSheet(); } |
下記のファイルに対して実行すると、
下記の結果になります。アクティブなシートの右側にデフォルト名でシートが追加されます。
指定した名前でシートを追加する:insertSheet(sheetName)
指定したシート名でアクティブなシートの右側にシートを追加するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.insertSheet("新シート"); } |
下記のファイルに対して実行すると、
下記の結果になります。アクティブなシートの右側に指定したシート名でシートが追加されます。
指定した位置にシートを追加する:insertSheet(sheetIndex)
デフォルトのシート名で指定した位置にシートを追加するメソッドです。
指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.insertSheet(2); } |
下記のファイルに対して実行すると、
下記の結果になります。指定した2番目のシートの右側に追加されます。
指定した名前で指定した位置にシートを追加する:insertSheet(sheetName, sheetIndex)
指定したシート名で指定した位置にシートを追加するメソッドです。
指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.insertSheet("シート0",0); } |
下記のファイルに対して実行すると、
下記の結果になります。指定したシート名で指定した位置に追加されます。
テンプレートをもとにシートを追加する:insertSheet(options)
指定したシートをテンプレートとしてシートを追加するメソッドです。
シート名はテンプレートをもとに自動で決められ、アクティブなシートの右側に追加されます。
下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。
下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testTemplate = testSpreadSheet.getSheetByName("管理表テンプレート"); //テンプレートとするシートを取得 const newSheet = testSpreadSheet.insertSheet({ template: testTemplate }); //シートを追加 newSheet.getRange("A1").setValue("2024年度管理表"); //追加したシートの値を変更 } |
実行すると、下記の結果になります。指定したテンプレートをベースにシート名が自動で決められ、アクティブなシートの右側にシートが追加されます。
指定した名前でテンプレートをもとにシートを追加する:insertSheet(sheetName, options)
指定したシートをテンプレートとしてシートを追加するメソッドです。
指定したシート名で、アクティブなシートの右側に追加されます。
下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。
下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testTemplate = testSpreadSheet.getSheetByName("管理表テンプレート"); //テンプレートとするシートを取得 const newSheet = testSpreadSheet.insertSheet("2024年度", { template: testTemplate }); //シートを追加 newSheet.getRange("A1").setValue("2024年度管理表"); //追加したシートの値を変更 } |
実行すると、下記の結果になります。指定したシート名で、アクティブなシートの右側にシートが追加されます。
指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetIndex, options)
指定したシートをテンプレートとしてシートを追加するメソッドです。
シート名はテンプレートをもとに自動で決められ、指定した位置に追加されます。
指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。
下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。
下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testTemplate = testSpreadSheet.getSheetByName("管理表テンプレート"); //テンプレートとするシートを取得 const newSheet = testSpreadSheet.insertSheet(2, { template: testTemplate }); //シートを追加 newSheet.getRange("A1").setValue("2024年度管理表"); //追加したシートの値を変更 } |
実行すると、下記の結果になります。シート名はテンプレートをもとに自動で決められ、指定した位置にシートが追加されます。
指定した名前で指定した位置にテンプレートをもとにシートを追加する:insertSheet(sheetName, sheetIndex, options)
指定したシートをテンプレートとしてシートを追加するメソッドです。
指定したシート名で、指定した位置に追加されます。
指定した数値のシートの右側に追加されます。
一番左に追加したい場合は0を指定します。
下記のファイルを前提に使用例を説明します。
「管理表テンプレート」シートがあり、それをベースに次年度のシートを追加してみます。
下記のように実行します。
optionsは、下記のように、オブジェクト形式でtemplate要素に値を入れます。
なお、実行後にA1セルの値を「2024年度管理表」に変えてます。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testTemplate = testSpreadSheet.getSheetByName("管理表テンプレート"); //テンプレートとするシートを取得 const newSheet = testSpreadSheet.insertSheet("2024年度", 2, { template: testTemplate }); //シートを追加 newSheet.getRange("A1").setValue("2024年度管理表"); //追加したシートの値を変更 } |
実行すると、下記の結果になります。指定したシート名で、指定した位置にシートが追加されます。
アクティブなシートを移動する
スプレッドシートのアクティブなシートを移動するメソッドを説明します。
アクティブなシートを移動する:moveActiveSheet(pos)
アクティブなシートを指定した位置に移動するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.moveActiveSheet(3); } |
下記のファイルに対して実行すると、
下記の結果になります。アクティブなシートが3番目に移動されます。
存在しない位置を引数に入れるとエラーになります。
アクティブなシートをコピーする
スプレッドシートのアクティブなシートをコピーするメソッドを説明します。
アクティブなシートをコピーする:duplicateActiveSheet()
アクティブなシートをコピーするメソッドです。
コピー後は、コピー後のシートがアクティブになります。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.duplicateActiveSheet(); } |
下記のファイルに対して実行すると、
下記の結果になります。右側にコピーされたシートができます。そして、コピーされたシートがアクティブになります。
シートを削除する
スプレッドシートのシートを削除するメソッドを説明します。
アクティブなシートを削除する:deleteActiveSheet()
アクティブなシートを削除するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.deleteActiveSheet(); } |
下記のファイルに対して実行すると、
下記の結果になります。アクティブだったシートが削除され、右側のシートがアクティブになります。
指定したシートを削除する:deleteSheet(sheet)
指定したシートを削除するメソッドです。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.deleteSheet(testSpreadSheet.getSheetByName("シート2")); //シート2を削除 } |
下記のファイルに対して実行すると、
下記の結果になります。指定した「シート2」が削除されます。
まとめ
Google Apps Script (GAS) でシートの取得・追加・コピー・削除等の各種操作をする方法を説明しました。
GASは無料で利用できてとても便利なツールです。
Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます。
GASの基本構文を知りたい方は、下記もご覧ください。