このようなオブジェクトをJSONにしてGoogleドライブに保存しておいて
var obj = {
'hello': 'はろー',
'world': 'わーるど',
'foo': 'ふー',
'bar': 'ばー'
};
GASのWebアプリでhelloとfooをパラメータで渡したら、はろーとふーを返してくれるアプリ
https://script.google.com/macros/s/WebアプリのID/exec?sentence=hello foo
を作ってみる
- GoogleドライブにJSONファイルを保存する
- JSONを読み込んで返すWebアプリを作る
- そのアプリにアクセスしてJSONから欲しいデータを取得する
関連記事
JSONデータを作ってGoogleドライブに保存する
Google Apps Script側でAPIを用意してJSONを返したい
GASでAPIを作ってみる(ContentService)
1. GoogleドライブにJSONファイルを保存する
save_as_json()を実行すると
指定したフォルダにcreate_data()のJSONファイルが保存され
そのファイルIDがログに出ます。
コード1.gs/************************************ JSONファイルを作成してドライブに保存する ************************************/ function save_as_json() { var file_name = 'ファイル名';// 保存するJSONファイルの名前 var folder_id = 'フォルダID';// JSONファイルを保存するGoogleドライブのフォルダID var json = create_data(); var file_id = create_file(json, file_name, folder_id); Logger.log(file_id); } function create_data() { var obj = { 'hello': 'はろー', 'world': 'わーるど', 'foo': 'ふー', 'bar': 'ばー' }; var json = JSON.stringify(obj); return json; } function create_file(json, file_name, folder_id) { var content_type = 'application/json'; var blob = Utilities.newBlob("", content_type, file_name); var file = blob.setDataFromString(json, 'UTF-8'); var folder = DriveApp.getFolderById(folder_id); var created_file = folder.createFile(file); var file_id = created_file.getId(); return file_id; } |
2. JSONを読み込んで返すWebアプリを作る
以下のコード2.gsの「jsonFileId」のJSON_IDに入れて
Webアプリをデプロイします。
コード2.gs/************************************ JSONから一致するkeyのvalueを返す ************************************/ function doGet (e) { var jsonFileId = "JSON_ID";// 保存したJSONファイルのID var sentence = e.parameter.sentence; var json = getJSON(jsonFileId); var values = returnValues(json, sentence); return ContentService.createTextOutput(values) .setMimeType(ContentService.MimeType.JSON); } function getJSON(fileId) { var file = DriveApp.getFileById(fileId); var blob = file.getBlob(); var json = blob.getDataAsString(); return json; } function returnValues(json, sentence) { var jobj = JSON.parse(json); var words = sentence.split(' '); var values = []; for(var i = 0; i < words.length; i++) { var word = words[i]; var phonetic = jobj[word]; values.push(phonetic); } return values; } |