スプレッドシートしたい(SpreadsheetApp
)
const spreadsheet = SpreadsheetApp.getActive()
const sheet = spreadsheet.getActiveSheet();
const data = sheet.getDataRange().getValues().slice(1);
console.log(data);
GASでGoogleスプレッドシートを扱うにはSpreadsheetAppクラスを使います。
スプレッドシートにはスプレッドシート
> シート
> セル
という構造がありますが、それぞれ
Spredsheetクラス、Sheetクラス、[Rangeクラス][https://developers.google.com/apps-script/reference/spreadsheet/range]のオブジェクトが対応します。
上記のコードサンプルでは、取得したシートにある値をgetDataRange
ですべて選択し、getValues
することで2次元配列のデータにしています。
最後に中身を確認するためにconsole.log
しています。
ここに処理を追加してCSVにしたり、JSONにしたり、ウェブAPIっぽくしたりもできます。
スプレッドシートを開きたい(openById
)
const spreadsheet = SpreadsheetApp.getActive();
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const spreadsheet = SpreadsheetApp.openById("スプレッドシートのID");
const spreadsheet = SpreadsheetApp.openByUrl("スプレッドシートのURL");
スプレッドシートにバインドしたスクリプトの場合、getActive...
でスプレッドシートを開くことができます。
他の場所にあるスプレッドシートを開きたい場合は、``openBy…`を使います。
シートを開きたい(getSheetByName
)
const sheet = SpreadsheetApp.getActiveSheet();
const sheet = SpreadsheetApp.openById("スプレッドシートID").getSheetsByName("シート名");
const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
シートはスプレッドシートの中にあるので、Spreadsheetクラス
のオブジェクトを通してアクセスできます。
スプレッドシートIDとシート名を使って、あるスプレッドシートを開くことができます。
getSheets
(複数形)で複数のシートを配列として取ってくることもできます。
シート名を変更したい(setName
)
sheet.setName("変更後のシート名");
同じ名前のシートは作れません。
シートを削除したい(deleteSheet
)
spreadsheet.deleteSheet(spreadsheet.getSheetByName("シート名"););
シートを削除する場合は、Spreadsheet
オブジェクトに対して操作します。
シートを保護したい(protect
)
const protection = sheet.protect().setDescription("説明");
const protection = cells.protect().setDescription("説明");
シートや選択したセルを保護できます。
セルを選択したい(getRange
)
const cell = sheet.getRange("セル名");
const cell = sheet.getRange("行番号", "列番号");
const cells = sheet.getRange("セル名:セル名");
const cells = sheet.getRange("行番号", "列番号", "行数");
const cells = sheet.getRange("行番号", "列番号", "行数", "列数");
const data = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumns());
const data = sheet.getDataRange().slice(1);
セル名や番地(行番号と列番号)を使ってセルを選択できます。
getDataRange
でデータが存在する範囲をすべて選択できます。
データに見出しを含みたくない場合はslice(1)
するとよいかもしれません。
データを追加したい(setValues
)
// データは二次元配列で作成する
const data = [
["A1", "B1", "C1"],
["A2", "B2", "C2"],
["A3", "B3", "C3"],
["A4", "B4", "C4"],
];
// 配列のサイズを求める
const nrows = data.length
const ncols = data[0].length
// 範囲を指定してデータをセットする
const range = sheet.getRange(1, 1, nrows, ncols).setValues(data);
セル書式を変更したい
const cells = sheet.getRange(範囲); // 開始行, 開始列, 行数, 列数
cells.setFontSize(整数);
cells.setFontFamily("フォント名");
cells.setFontWeight("ウェイト名"); // "normal", "bold"
cells.setFontStyle("スタイル名"); // "normal", "italic"
cells.setFontLine("ライン名"); // "none", "underline", "line-through"
cells.setFontColors("色");
cells.setBackgrounds("色");
選択したセルに対して、フォントやスタイル、文字色などを設定できます。
組み込み関数したい(setFormula
)
const cell = sheet.getRange("セル名");
cell.setFormula("=SUM(セル名:セル名)");
setFormula
を使って、スプレッドシートの組み込み関数を利用できます。
グラフしたい
const chart = sheet.newChart()
.asBarChart()
.addRange(データの範囲)
.setPosition(表示位置)
.setOption("height", 高さ)
.setOption("width", 幅)
.setOption("title", タイトル)
.build();
sheet.insertChart(chart);
カスタムメニューしたい(getUi
)
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu("メニュー名");
menu.addItem("アイテム名1", "関数名1");
menu.addItem("アイテム名2", "関数名2");
menu.addSeparator();
menu.addItem("アイテム名3", "関数名3");
menu.addToUi();
}
スプレッドシートにカスタムメニューを追加できます。
シートを開いたときに、メニューに追加するためonOpen
関数の中で定義します。