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

使用Google Forms Webhook时请求失败的问题排查求助

解决Google Forms提交后Webhook发送报错400的问题

问题分析

报错提示Cannot send an empty message,说明Webhook接收方未识别到有效消息内容——不是你的payload为空,而是payload的结构不符合接收方的格式要求(比如部分Webhook要求必须包含content或text这类特定顶级字段,而你当前直接把问答作为键值对存入payload,对方无法识别)。

解决步骤

1. 获取完整错误详情,明确接收方格式要求

修改代码添加muteHttpExceptions参数,打印完整服务器响应,确认接收方需要的具体格式:

var POST_URL = "my webhook url";
function onSubmit(e) {
    var itemResponses = e.response.getItemResponses(); // 直接用事件参数里的响应,更高效
    var payload = {};
    for (var i = 0; i < itemResponses.length; i++) {
        var question = itemResponses[i].getItem().getTitle();
        var answer = itemResponses[i].getResponse();
        payload[question] = answer;
    }
  
    var options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload),
        "muteHttpExceptions": true // 添加该参数以获取完整错误响应
    };
    var response = UrlFetchApp.fetch(POST_URL, options);
    Logger.log(response.getContentText()); // 打印完整响应,查看详细错误提示
};

运行后查看编辑器顶部「查看」→「日志」,就能明确接收方需要的具体数据结构。

2. 调整payload结构适配接收方要求

以Discord、Webex这类常见Webhook为例,它们要求消息内容放在content字段中,你可以把所有问答拼接成易读文本后放入该字段:

var POST_URL = "my webhook url";
function onSubmit(e) {
    var itemResponses = e.response.getItemResponses();
    // 拼接所有问答为格式化文本
    var messageContent = itemResponses.map(function(item) {
        return `${item.getItem().getTitle()}: ${item.getResponse()}`;
    }).join('\n\n'); // 用换行分隔不同问答
    
    // 按照接收方要求构造payload,此处以需要content字段为例
    var payload = {
        content: messageContent
    };
  
    var options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload)
    };
    UrlFetchApp.fetch(POST_URL, options);
};

如果接收方要求其他格式(比如text字段、嵌套结构),根据日志中的错误提示调整payload即可。

3. 代码优化:用事件参数直接获取当前响应

原代码通过form.getResponses()取最后一个响应,在多人同时提交时可能取到错误数据。直接使用onSubmit事件的e.response参数,能准确获取触发本次提交的响应,可靠性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:38