首页 > 解决方案 > 如何让 Flask 网站捕获 Google 表单提交事件触发器以更新该网站?

问题描述

我有一个写在 Flask 上的网站,我想在提交 Google 表单的答案后更新它。

更准确地说,我已经将表单与 Google 电子表格相关联,并且可以从 Flask 中读取该电子表格,但缺少的关键组件是如何在向表单提交新答案时触发网站更新其内容。

最好的方法是什么?

标签: flaskgoogle-apps-scriptgoogle-sheetsgoogle-sheets-apigoogle-forms

解决方案


网络钩子解决方案:

谷歌表格:

  1. 输入 Google 表单编辑器
    1. 单击个人资料图片旁边的 3 个垂直点,然后选择“脚本编辑器”
    2. 将此代码段自定义到您的 WebHook url 并设置自定义令牌(这不是很安全,但总比没有好)。
function onFormSubmit(e) {
  const url = "https://example.com/webhook";

  var options = {
        "method": "post",
        "headers": {
            "Content-Type": "application/json"
        },
    "payload": JSON.stringify({"token": "sometokenheretocheckonbackend"})
  };
  UrlFetchApp.fetch(url, options);
}

(可能会弹出对话框,您必须批准您连接到未经授权的服务)

Flask 端的处理:

from http import HTTPStatus
from flask import (
    abort,
    request
)


@blueprint.route('/webhook', methods=['POST'])
def handle_webhook():

    payload = request.get_json()

    if payload.get('token') != "sometokenheretocheckonbackend":
        abort(HTTPStatus.UNAUTHORIZED)

    # Update your content

    return jsonify({'success': True}), HTTPStatus.OK

定期更新(替代解决方案):

我会考虑启动一个定期更新此内容的守护线程。这显然不是那么优雅,但应该工作相当稳定,如果内容更新过程相当轻量级,对服务器的要求也不会更高。


推荐阅读