ブックを操作したい(Spreadsheet)
1const book = SpreadsheetApp.openById("スプレッドシートのID");
2const book = SpreadsheetApp.openByUrl("スプレッドシートのURL");
3
4// アクティブなブックを取得(バインドスクリプトの場合)
5const book = SpreadsheetApp.getActiveSpreadsheet();
Spreadsheetはブック全体を管理するオブジェクトです。
公式リファレンスやサンプルコードでは変数名にssが使われますが、
このドキュメントではbookという変数名を使います。
ブックを開きたい(openById / openByUrl)
1// IDを指定する
2const book = SpreadsheetApp.openById("スプレッドシートのID");
3
4// URLを指定する
5const book = SpreadsheetApp.openByUrl("スプレッドシートのURL");
SpreadsheetApp.openByIdでIDを指定してブックを取得できます。
また、SpreadsheetApp.openByUrlでURLを直接指定してブックを取得できます。
スタンドアロンスクリプトや、他のスクリプトからも開くことができるため、 非常によく使うメソッドのひとつです。
ヒント
URL: https://docs.google.com/spreadsheets/d/【ID】/edit
ブックのURLの書式は上記のとおりです。
【ID】のランダムな文字列がIDです。
現在のブックを開きたい(getActiveSpreadsheet)
1// バインドスクリプトの場合
2const book = SpreadsheetApp.getActiveSpreadsheet();
3Logger.log(`name: ${book.getName()}`);
4Logger.log(`ID: ${book.getId()}`);
5Logger.log(`URL: ${book.getUrl()}`);
SpreadsheetApp.getActiveSpreadsheet()で、現在アクティブになっているブックを取得できます。
ただし、コンテナバインドスクリプトからしか使えません。
スタンドアロンスクリプトの場合は、openByIdやopenByUrlを使ってください。
ブックを共同編集したい(addEditor / removeEditor)
1book.addEditor("someone@example.com");
2book.removeEditor("someone@example.com");
SpreadsheetApp.addEditorで、ブックに対するアクセス権を付与できます。
反対にSpreadsheetApp.removeEditorでアクセス権を削除できます。
ブック全体を複製したい(copy)
1const book = SpreadsheetApp.openById("コピー元のID");
2const copied = book.copy("コピー先のファイル名");
SpreadsheetApp.copyメソッドでブック全体を複製できます。
新しいブックが作成されるため、URLも新規発行されます。
シートを取得したい(getSheetByName)
1const sheet = book.getSheetByName("シート名");
getSheetByNameでシート名を指定してシートを取得できます。
指定した名前のシートが存在しない場合はnullが返ります。
シートを追加したい(insertSheet)
1const newSheet = book.insertSheet("新しいシート名");
SpreadsheetApp.insertSheetで新しいシートを作成できます。
1const sheetName = "シート名";
2const sheet = book.getSheetByName(sheetName) || book.insertSheet(sheetName);
getSheetByNameと組み合わせて、シートが存在しない場合だけ新しく作る、
というパターンでよく使います。
すべてのシートを取得したい(getSheets)
1const sheets = book.getSheets();
2const nSheets = sheets.length;
3Logger.log("シートの数: " + nSheets);
4sheets.forEach(sheet => {
5 Logger.log(sheet.getName());
6 // その他のsheetに対する処理
7})
getSheetsでブックにあるすべてのシートの配列を取得できます。
この配列の要素数(.length)でシートの数を確認できます。
また、この配列に対してforEachでループ処理できます。
シートを削除したい(deleteSheet)
1const sheetToDelete = book.getSheetByName("不要なシート名");
2book.deleteSheet(sheetToDelete);
SpreadsheetApp.deleteSheetでシートを削除できます。
引数はSheetオブジェクトです。
シート名(String)ではない点に気をつけてください。