ブックを操作したい(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)ではない点に気をつけてください。

リファレンス