GoogleスプレッドシートをAPIとして使用する – あるシートの情報をまるまるJSONとして返却

公開日:2020.05.14
NO IMAGE

主に自分向けの備忘です。

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として使用できます!

【文字数:1299文字】

Javascriptカテゴリの最新記事