ブックを操作したい(Spreadsheet)
1const book = SpreadsheetApp.getActiveSpreadsheet();
2const book = SpreadsheetApp.openById("スプレッドシートのID");
3const book = SpreadsheetApp.openByUrl("スプレッドシートのURL");
Spreadsheetはスプレッドシート全体を管理するオブジェクトです。
サンプルコードではssが使われますが、僕はbookという変数名を使います。
現在のスプレッドシートを開きたい(getActiveSpreadsheet)
1const book = SpreadsheetApp.getActiveSpreadsheet();
2Logger.log(`name: ${book.getName()}`);
3Logger.log(`ID: ${book.getId()}`);
4Logger.log(`URL: ${book.getUrl()}`);
SpreadsheetApp.getActiveSpreadsheet()で、
スクリプトがバインドされているスプレッドシートを取得できます。
スプレッドシートを開きたい(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です。
シートを取得したい(getSheetByName)
1const sheet = book.getSheetByName("シート名");
getSheetByNameでシート名を指定してシートを取得できます。
指定した名前のシートが存在しない場合はnullが返ります。
シートを追加したい(insertSheet)
1const newSheet = book.insertSheet("新しいシート名");
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);
deleteSheetでシートを削除できます。
引数はSheetオブジェクトです。
名前(String)ではない点に気をつけてください。
共同編集したい(addEditor / removeEditor)
1book.addEditor("someone@example.com");
2book.removeEditor("someone@example.com");
addEditorでアクセス権を付与できます。
removeEditorでアクセス権を削除できます。
スプレッドシート全体を複製したい(copy)
1const book = SpreadsheetApp.openById("コピー元のID");
2const copied = book.copy("コピー先のファイル名");
copyメソッドでスプレッドシート全体を複製できます。
新しいブックが作成されるため、URLも新規発行されます。