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

Google Chat Apps Script应用点击卡片按钮偶现请求处理失败错误

问题分析与解决方案

核心原因

Google Chat对Apps Script的同步响应存在严格超时限制(通常在10-30秒区间,受Apps Script冷启动、资源调度影响)。当按钮触发的处理函数执行时间接近或超过该阈值时,Chat会直接判定响应失败,显示“无法处理您的请求”——即便脚本后续能完成任务,同步响应的窗口也已关闭,无法将结果返回至聊天界面。

你日志中的错误也对应了这个核心问题:

  • code: 3:Chat未收到有效响应或响应超时
  • code: 9:超时导致函数执行中断,或是按钮配置的处理函数名与实际定义不匹配(你的示例代码中按钮action.function写的是test,但实际处理函数是onCardClick,这也是触发该错误的直接原因)
  • code: 13:Chat内部处理超时响应时的异常

解决方案:改用异步响应模式

放弃同步返回结果的方式,改为先返回即时确认,再通过Chat API异步更新消息,彻底规避超时问题。

步骤1:修正函数名匹配问题

先修正按钮的action.function,确保和实际处理函数名一致:

// onMessage函数中的按钮配置修改为:
"onClick": {
  "action": {
    "function": "onCardClick" // 和你的处理函数名保持一致
  }
}

步骤2:修改处理函数为异步模式

使用Chat API先发送临时提示,待任务完成后更新消息内容:

function onCardClick(event) {
  // 提取聊天上下文信息
  const messageId = event.message.name;
  const tempPayload = { text: "正在处理,请稍候..." };

  // 先更新原消息为临时提示
  updateChatMessage(messageId, tempPayload);

  // 异步执行耗时任务(避免阻塞同步响应)
  setTimeout(() => {
    Utilities.sleep(5000); // 模拟你的耗时任务
    const finalPayload = { text: "This is a test Text" };
    // 任务完成后更新消息为最终结果
    updateChatMessage(messageId, finalPayload);
  }, 100);

  // 立即返回空响应,避免Chat判定超时
  return { text: "" };
}

// 封装Chat API更新消息的函数
function updateChatMessage(messageId, payload) {
  const apiUrl = `https://chat.googleapis.com/v1/${messageId}`;
  const options = {
    method: "PUT",
    contentType: "application/json",
    headers: {
      "Authorization": `Bearer ${ScriptApp.getOAuthToken()}`
    },
    payload: JSON.stringify(payload)
  };
  UrlFetchApp.fetch(apiUrl, options);
}

步骤3:配置OAuth权限

修改appsScript.json,添加必要的API权限:

{
  "timeZone": "Europe/Lisbon",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "chat": {},
  "oauthScopes": [
    "https://www.googleapis.com/auth/chat.messages",
    "https://www.googleapis.com/auth/script.external_request"
  ]
}

额外优化建议

  1. 启用详细日志:在函数关键节点添加console.log(),记录执行时间点,排查是否存在意外延迟。
  2. 减少冷启动影响:对于高频使用的应用,设置定时触发器定期唤醒脚本,降低冷启动耗时。
  3. 拆分长任务:如果任务确实需要长时间执行,拆分为多个小步骤,通过多次更新消息反馈进度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:57:42