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