スプレッドシートしたい(SpreadsheetApp
)
1// アクティブなスプレッドシート(=ブック)を取得する
2const book = SpreadsheetApp.getActiveSpreadsheet();
3// アクティブなシートを取得する
4const sheet = book.getActiveSheet();
5// アクティブなセル範囲を取得する
6const range = sheet.getActiveRange();
7// セルの値を2次元配列で取得する
8const arrays = range.getValues();
9
10// 見出しとデータに分割代入
11const { headers, ...data } = arrays;
12
13Logger.log(`見出し: ${headers}`);
14Logger.log(`データ数: ${data.length}`);
15
16// 読み込んだデータをあれこれ
17const arraysToWrite = ...;
18
19// 書き込むシートを取得する(なければ作成する)
20const name = "writeSheet";
21const sheetToWrite = sheet.getSheetByName(name) || sheet.insertSheet(name);
22
23// 範囲を指定してデータを書き込む
24const rows = arraysToWrite.length;
25const cols = arraysToWrite[0].length;
26sheetToWrite.getRange(1, 1, rows, cols).setValues(arraysToWrite);
SpreadsheetAppクラスで、Googleスプレッドシートを操作できます。
スプレッドシートにはブック(スプレッドシート)
> シート
> セル
という構造があります。
それぞれ
Spredsheetクラス、
Sheetクラス、
Rangeクラス
のオブジェクトが対応しています。
上記のコードサンプルでは、取得したシートにある値をgetDataRange
ですべて選択し、getValues
することで2次元配列のデータにしています。
最後に中身を確認するためにLogger.log
しています。
ここに処理を追加してCSVにしたり、JSONにしたり、ウェブAPIっぽくしたりもできます。
スプレッドシート全体を複製したい(copy
)
1const book = SpreadsheetApp.openById("コピー元のID");
2const copied = book.copy("コピー先のファイル名");
copy
メソッドでスプレッドシート全体を複製できます。
新しいブックが作成されるため、URLも新規発行されます。
シートを複製したい(copyTo
)
1const source = SpreadsheetApp.openById("コピー元のID");
2const target = SpreadsheetApp.openById("コピー先のID");
3const sheet = source.getSheetByName("複製したいシート名");
4const copied = sheet.copyTo(target);
copyTo
で指定したシートを複製できます。
カスタムメニューしたい(getUi
)
1function onOpen() {
2 var ui = SpreadsheetApp.getUi();
3 var 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
関数の中で定義します。