スプレッドシートを操作したい(SpreadsheetApp)
1// アクティブなスプレッドシート(=ブック)を取得する
2const book = SpreadsheetApp.getActiveSpreadsheet();
3// アクティブなシートを取得する
4const sheet = book.getActiveSheet();
5// シートにあるすべてのデータを2次元配列で取得する
6const arrays = sheet.getDataRange().getValues();
7
8// 見出しとデータに分割
9const headers = arrays[0];
10const data = arrays.slice(1);
11
12Logger.log(`見出し: ${headers}`);
13Logger.log(`データ数: ${data.length}`);
14
15// 書き込むシートを取得する(なければ作成する)
16const name = "writeSheet";
17const sheetToWrite = book.getSheetByName(name) || book.insertSheet(name);
18
19// 範囲を指定してデータを書き込む
20const arraysToWrite = [headers, ...data];
21const rows = arraysToWrite.length;
22const cols = arraysToWrite[0].length;
23sheetToWrite.getRange(1, 1, rows, cols).setValues(arraysToWrite);
SpreadsheetAppクラスで、Googleスプレッドシートを操作できます。
スプレッドシートにはブック(スプレッドシート) > シート > セルという構造があります。
それぞれ
Spreadsheetクラス、
Sheetクラス、
Rangeクラス
のオブジェクトが対応しています。
上記のコードサンプルでは、取得したシートにある値をgetDataRangeですべて選択し、getValuesすることで2次元配列のデータにしています。
最後に中身を確認するためにLogger.logしています。
ここに処理を追加してCSVにしたり、JSONにしたり、ウェブAPIっぽくしたりもできます。
カスタムメニューを追加したい(getUi)
1function onOpen() {
2 const ui = SpreadsheetApp.getUi();
3 const menu = ui.createMenu("メニュー名");
4 menu.addItem("アイテム名1", "関数名1");
5 menu.addItem("アイテム名2", "関数名2");
6 menu.addSeparator();
7 menu.addItem("アイテム名3", "関数名3");
8 menu.addToUi();
9}
スプレッドシートにカスタムメニューを追加できます。
シートを開いたときに、メニューに追加するためonOpen関数の中で定義します。