このようなオブジェクトを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;
}
|
