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

如何让Google App Script为数组每一行推送webhook,解决重复通知问题

错误原因
  • 空的forEach循环未执行任何有效逻辑,没有遍历处理表格内的每一行人员数据
  • buildAlert函数固定取全表第一行的人员ID和链接data[0][0]、data[0][1],导致生成的payload永远是同一个人的信息
  • 全表仅生成了一次payload、触发一次发送请求,没有为每个用户单独调用发送逻辑
修复后可运行代码
function buildReport() {
  const ss = SpreadsheetApp.getActive();
  // 读取B2到C列的所有数据
  let data = ss.getSheetByName('Team').getRange("B2:C").getValues();
  // 遍历每一行数据
  data.forEach(function(row) {
    // 跳过空行,避免无效请求
    if (!row[0] || !row[1]) return;
    // 为当前行生成专属payload
    let payload = buildAlert(row);
    // 发送当前用户的专属消息
    sendAlert(payload);
  })
};

// 入参调整为单一行数据,而非全表数据
function buildAlert(row) {
  let id = row[0];
  let link = row[1];
  let payload = {
    "blocks": [
      {
        "id": id,
        "link": link
      }
    ]
  };
  return payload;
}

function sendAlert(payload) {
  const webhook = "https://hooks.zapier.com/hooks/catch/9909120/xxxxxxx/"; 
  var options = {
    "method": "post", 
    "contentType": "application/json", 
    "muteHttpExceptions": true, 
    "payload": JSON.stringify(payload) 
  };
  
  try {
    UrlFetchApp.fetch(webhook, options);
  } catch(e) {
    Logger.log(e);
  }
}
补充说明
  • 代码新增了空行判断逻辑,如果表格内存在ID或链接为空的行,会自动跳过不发送
  • 你可以根据实际需求调整Zapier接收的payload字段结构,适配Slack的消息发送格式要求
  • 测试时建议先拿2-3行有效数据做验证,确认发送正常后再全量运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:09:03