flask - 如何让 Flask 网站捕获 Google 表单提交事件触发器以更新该网站?
问题描述
我有一个写在 Flask 上的网站,我想在提交 Google 表单的答案后更新它。
更准确地说,我已经将表单与 Google 电子表格相关联,并且可以从 Flask 中读取该电子表格,但缺少的关键组件是如何在向表单提交新答案时触发网站更新其内容。
最好的方法是什么?
解决方案
网络钩子解决方案:
谷歌表格:
- 输入 Google 表单编辑器
- 单击个人资料图片旁边的 3 个垂直点,然后选择“脚本编辑器”
- 将此代码段自定义到您的 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
定期更新(替代解决方案):
我会考虑启动一个定期更新此内容的守护线程。这显然不是那么优雅,但应该工作相当稳定,如果内容更新过程相当轻量级,对服务器的要求也不会更高。
推荐阅读
- python - 如何在代码中使用 python 覆盖率
- mysql - Mysql查询 - 查找不在多个范围内的总和(常绿)
- context-free-grammar - 上下文无关语法,数字范围
- java - 是否可以使用 JpaRepository 在 Spring Data JPA 中使用“TRUNCATE”?还是比标准 deleteAll() 更有效的方法?
- c++ - 将 gsl c++ 程序与英特尔 MKL 链接
- tcl - 将文件名从按钮重新定位到条目并将文件名用作全局变量
- python - 我不知道为什么,但这段代码有时可以工作,有时会抛出错误任何想法?:
- php - date_diff 的 php 问题
- android - 无法解决:com.google.firebase:firebase-messaging:16.0.5
- java - spring 上下文没有从 XML 文件加载 bean