Google Apps Script側でAPIを用意してJSONを返したい
の発展形で、アプリのURLにパラメータを渡して、一致するプロパティの値を返す仕組みを作ってみます。
APIとして値を返す側のコード
コード2.gsからパラメータを付けてコード1.gsのアプリのURLにアクセスして
コード1.gs内のobjを参照して
パラメータの文字列に一致するプロパティの値を返す
コード1.gs
function getObj() {
var obj = {'hello': 'はろー', 'world': 'わーるど', 'foo': 'ふー', 'bar': 'ばー'};
return obj;
}
function doGet(e) {
var sentence = e.parameter.sentence;
var obj = getObj();
var json = JSON.stringify(obj);
var matchValues = returnMatchValues(json, sentence);
return ContentService.createTextOutput(matchValues)
.setMimeType(ContentService.MimeType.JSON);
}
function returnMatchValues(json, sentence) {
var jobj = JSON.parse(json);
var words = sentence.split(' ');
var matchValues = [];
for(var i = 0; i < words.length; i++) {
var word = words[i];
var value = jobj[word];
matchValues.push(value);
}
return matchValues;
}
|
APIをたたく側のコード
「hello bar」という文字列をコード1.gsのアプリのURLにパラメータで渡して
コード1.gs内のobjの一致するプロパティの値を受け取ってログに出す
コード2.gsfunction getData() {
var sentence = 'hello bar';
var url = 'https://script.google.com/macros/s/コード1.gsをWebアプリとして導入した際のID/exec' + '?sentence=' + sentence;
var response = UrlFetchApp.fetch(url).getContentText();
Logger.log(response);
}
|
実行結果
補足
- コード1.gsとコード2.gsはそれぞれ新規プロジェクトで作成します
- コード2.gsはGASで書きましたが、ブラウザで以下のようにアクセスしても結果を得られます
https://script.google.com/macros/s/コード1.gsのWebアプリのID/exec?sentence=hello foo
