Google App Scriptsとflask APIの使い方
概要
- GASでのクエリの送り方が限定されるから(URLパラメータなどではなく、jsonでデータをポストすることになる)、特別なインターフェースを設計する必要がある
サーバの具体例
import json
import hashlib
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
# digest認証
if hashlib.sha256(bytes(request.headers.get('x-api-key').__str__(), "utf8")).hexdigest() != "4aefce3147cab9b00acff660df3bae494e5bc8d76d644f7b99374d624f2f7a91":
return "invalid access.", 400
# GASの場合、paramのフィールドではなく,JSONでデータを取得する
obj = request.get_json()
if obj is None:
return "no parameters", 400
if obj.get("data-key") is None:
return "data-key was not set.", 400
...
return "something json value"
クライアントの具体例(GAS)
var headers = {
"x-api-key": "jFyeYNPaTn8jG3WLnfn*******************"
};
var options = {
'method' : 'post',
'headers': headers,
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(URL, options);
クライアントの具体例(python)
import requests
headers = {"x-api-key": "jFyeYNPaTn8jG3WLnfn*******************"}
data = {"any": "data"}
with requests.post(URL, json=data, headers=headers) as r:
print(r.text)