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

从Google表格向Google Chat/Spaces发送数据遇400错误求助

问题:Google Apps Script 向 Google Chat 发送表格数据时返回400错误

正常工作的代码(发送纯文本消息)

以下代码可正常向Google Chat/Spaces发送文本消息:

function myFunction() {
    var WebWhooklink = "Sample_URL"
    var message = { text: "Hello"};
    var payload = JSON.stringify(message);
    var options = {
            method: 'POST',
            contentType: 'application/json',
            payload: payload
    };
  
    var response =  UrlFetchApp.fetch(WebWhooklink, options ).getContentText();
}

修改后出错的代码(读取表格数据发送)

尝试从名为Emailer的表格中Email工作表读取B3:D5范围的数据并发送时,出现400错误,修改后的代码:

function myFunction() {
 var sheet = SpreadsheetApp.getActive().getSheetByName("Email");
var dataGrid = sheet.getRange(3, 2, 3, 3).getValues();  


    var WebWhooklink = "Sample_URL"
    var message = {dataGrid};
    var payload = JSON.stringify(message);
    var options = {
            method: 'POST',
            contentType: 'application/json',
            payload: payload
    };
  
    var response =  UrlFetchApp.fetch(WebWhooklink, options ).getContentText();
}

错误信息

Exception: Request failed for https://chat.googleapis.com returned code 400. Truncated server response: {
"error": {
"code": 400,

问题原因

Google Chat的Webhook接口要求请求必须包含符合规范的消息字段,其中text是发送纯文本消息的必填字段。修改后的代码中,message = {dataGrid}生成的结构是{dataGrid: [[单元格数据]]},完全不符合Google Chat的消息格式要求,因此接口返回400参数错误。

解决办法

将读取到的二维表格数据转换为可读性强的文本格式,再放入text字段中构造合法的消息结构,修正后的代码如下:

function myFunction() {
  // 获取目标工作表及指定范围的数据
  var sheet = SpreadsheetApp.getActive().getSheetByName("Email");
  var dataGrid = sheet.getRange(3, 2, 3, 3).getValues();  

  // 将二维数组转换为易读的文本:每行单元格用制表符分隔,行与行用换行符分隔
  var messageText = dataGrid.map(row => row.join("\t")).join("\n");

  var WebWhooklink = "Sample_URL";
  // 构造符合Google Chat要求的消息结构,必填text字段
  var message = { text: messageText };
  var payload = JSON.stringify(message);
  var options = {
    method: 'POST',
    contentType: 'application/json',
    payload: payload
  };
  
  var response = UrlFetchApp.fetch(WebWhooklink, options).getContentText();
}

代码说明

  • dataGrid.map(row => row.join("\t")):将每一行的单元格数据用制表符分隔,保证列对齐
  • join("\n"):将处理后的每行数据用换行符连接,形成完整的表格文本
  • 消息结构必须包含text字段,这是Google Chat Webhook接收纯文本消息的强制要求

如果需要更美观的展示形式,可进一步使用Google Chat的卡片消息格式(如添加表头、分隔线等),但上述代码已解决基础的400错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:47:42