#目的/ゴール
GoogleAppsScriptを利用して、SpreadSheetのデータをJSONで返すAPIを作成する
#背景
Django家計簿アプリの作成にトライ中。
今はGoogleSpreadSheetで家計簿をつけているので、そのデータをDjangoでも利用したいと考えている
そこでSpreadSheetから現状のデータを取り出し、JSONで返してくれるAPIを作成したい。
GoogleAppsScriptで、単にreturn [json data]
でいいのかと思ったらだめだった。どうやらContentServiceを利用する必要があるらしい
なんとかAPI-Callに成功したのでとりあえずメモ
GAS
##script
function doGet(e) {
// listデータをjsonに変換
payload = JSON.stringify(get_kakeibo())
// payloadをreturnするだけではだめ
// ContentServiceを利用して、responseを作成
ContentService.createTextOutput()
var output = ContentService.createTextOutput();
output.setMimeType(ContentService.MimeType.JSON);
output.setContent(payload);
// return response-data
return output;
}
function get_kakeibo(){
var id = [SpreadsheetのID]
var ss = SpreadsheetApp.openById(id)
var sheet = ss.getSheetByName("シート名")
var values = sheet.getRange(1, 1, 3, 10).getValues()
var res = {}
for(var i=0; i<10; i++){
res[values[2][i]] = values[0][i]
}
Logger.log(res)
return res
}
##設定
公開>Webアプリケーションとして導入
・CurlやWebアプリでアクセスできるようにするため、アクセスできるユーザは「全員(匿名ユーザも含む)」にする
##curlで叩く
無事、APIを叩けました
# -Lオプションでリダイレクトに対応させる。jqでJSON表示
UG26:~ user$ curl -L "https://script.google.com/macros/s/AKfycbyszn8odB6D9bkL6H6fQJyA83PO3uske-I34F0bNhPsJeSlAN8/exec?method=get_kakeibo" | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 546 0 546 0 0 392 0 --:--:-- 0:00:01 --:--:-- 392
100 216 0 216 0 0 93 0 --:--:-- 0:00:02 --:--:-- 250
{
"年月": "Now",
"合計資産": 2198700,
"資産運用": 864710,
"SBI【5万+貯金】": 800000,
"ゆうちょ【40万over】": 521254,
"財布": 12736,
"貯金": 86200,
"収入": 536954,
"現金支出": 121682,
"カード払い": 0
}
UG26:~ user$