You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets变更触发脚本调用Python接口时请求错误如何修复?

解决Bad Request错误的具体方案

1. 对齐请求方法

先检查Flask路由的请求方法设置,比如你的Python函数如果用了@app.route('/on-edit', methods=['POST']),那Google Sheets脚本里必须明确指定POST方法,不能用默认的GET请求。
Sheets脚本里要这么写:

var payload = { /* 你的数据,比如从表格取到的内容 */ };
var options = {
  method: 'post',
  contentType: 'application/json',
  payload: JSON.stringify(payload)
};
UrlFetchApp.fetch('http://127.0.0.1:5000/on-edit', options);

2. 匹配数据格式

  • 如果Flask端用request.get_json()解析数据,Sheets脚本必须把数据转成JSON字符串,同时设置contentType: 'application/json',否则Flask无法识别请求体。
  • 如果Flask端用request.form获取表单数据,那Sheets脚本的payload直接传键值对,contentType设为application/x-www-form-urlencoded(或省略,默认会用这个格式)。

3. 检查Flask端的接收逻辑

确保你的Python函数正确处理请求数据,比如:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/on-edit', methods=['POST'])
def on_edit():
    # 尝试解析JSON数据
    data = request.get_json()
    if not data:
        return jsonify({"error": "未收到合法的JSON数据"}), 400
    # 检查必要参数是否存在
    if 'required_key' not in data:
        return jsonify({"error": "缺少必填参数"}), 400
    # 后续处理逻辑
    return jsonify({"status": "success"}), 200

if __name__ == '__main__':
    app.run(debug=True)

开启debug=True后,Flask会输出详细的错误日志,直接帮你定位问题。

4. 先本地测试接口

用curl或Postman先单独测试Flask接口,确认接口本身没问题:

curl -X POST -H "Content-Type: application/json" -d '{"test_key": "test_value"}' http://127.0.0.1:5000/on-edit

如果这个测试返回正常,问题就出在Sheets脚本的请求上;如果测试也报错,先修复Flask端的代码。

5. 排查跨域(如果后续部署)

如果之后要把Flask应用部署到公网,还需要处理跨域问题,本地测试127.0.0.1一般不会有这个问题,但可以提前用flask-cors库解决:

from flask_cors import CORS
CORS(app)

内容的提问来源于stack exchange,提问作者Afonso Solano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:46:05