主に自分向けの備忘です。
Googleのスプレッドシートって、他人と情報を共有しつつ、参照も更新もできるとても便利なWebアプリですよね。
プロジェクトでの開発案件の時とか、例えばこのスプレッドシートを論物変換辞書として活用し、外部からこの情報を引っこ抜いて利用(論物変換する)ということに使用したりしています。
このメソッドは割と汎用的に使える、というか今回複数のプロジェクトで使うことになったので、やり方を書いておきます。
クライアント側の実装については触れませんが、スプレッドシートをAPI化して、保持している情報を返却するという部分のみフォーカスしています。
function getData(sheetName) {
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
var rows = sheet.getDataRange().getValues();var res = {};
for(var i = 0; i < rows.length; i++){
res[ String(rows[i][0]) ] = String(rows[i][1]);
}return res;
}function doGet(e) {
var data = getData(‘DIC’);var result = data;
var responseText;var out = ContentService.createTextOutput();
var callback = e.parameter.callback;
if (callback) {
responseText = callback + “(” + JSON.stringify(result) + “)”;
//Mime Typeをapplication/javascriptに設定
out.setMimeType(ContentService.MimeType.JAVASCRIPT);} else {
responseText = JSON.stringify(result);
//Mime Typeをapplication/jsonに設定
out.setMimeType(ContentService.MimeType.JSON);
}//JSONPテキストをセットする
out.setContent(responseText);return out;
}
こんな感じです。シンプルですね。
doGetがリクエストを受けて返却するmain部分。ここはgetDataでデータを作ってもらって、あとはjsonpできるようにレスポンスを調整しているだけです。
getData関数はよりシンプルで、与えられたシート名の存在する行すべてを取得して返却するだけ。
あとはスプレッドシート自体のAPIとして公開の手順を踏めば晴れてAPIとして使用できます!