• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

flask gas

date: 2022-02-20 excerpt: Google App Scriptsとflask APIの使い方

tag: flaskgasapi


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)


flaskgasapi Share Tweet