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

RocketReach Webhook对接Google Sheets失败:事件对象未定义排查

问题分析与解决方案

核心问题定位

日志显示Received event: undefined和No postData available,说明Google Apps Script(GAS)的Webhook接收端根本没收到RocketReach发送的请求数据,问题出在部署配置或RocketReach的Webhook设置环节,而非代码逻辑本身。

必须检查的关键配置步骤

Google Apps Script部署设置

  • 部署时必须选择「Web应用」类型,不能选「API可执行文件」
  • 「执行权限」需设为**「任何人,甚至匿名」**(RocketReach的Webhook请求无身份验证)
  • 部署完成后复制完整的Web应用URL(格式类似https://script.google.com/macros/s/xxxx/exec),确保无拼写错误或多余字符
  • 每次修改代码后必须重新部署并选择「新版本」,否则旧代码仍会生效

RocketReach Webhook配置

  • 确认填写的Webhook URL与GAS部署的URL完全一致,无空格或格式错误
  • 检查触发条件是否设置为「点击Get Contact后触发」
  • 确认RocketReach发送的请求为POST方法,且数据格式为JSON(GAS的doPost函数仅响应POST请求)
  • 用Postman或curl手动测试Webhook URL,验证是否能正常写入表格:
    curl -X POST -H "Content-Type: application/json" -d '{"full_name":"John Doe","current_employer":"Acme Corp","occupation":"Software Engineer","email":"john@acme.com"}' https://你的GAS部署URL/exec
    

代码鲁棒性优化(可选)

虽然核心问题不在代码,但可以优化兼容场景:

function doPost(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Company Leads');
    let data = {};

    // 兼容JSON和表单两种数据格式
    if (e.postData && e.postData.type === 'application/json') {
      data = JSON.parse(e.postData.contents);
    } else {
      data = e.parameter;
    }

    Logger.log("Received data: " + JSON.stringify(data));

    // 检查必填字段
    const requiredFields = ['full_name', 'current_employer', 'occupation', 'email'];
    const missingFields = requiredFields.filter(field => !data[field]);
    if (missingFields.length > 0) {
      throw new Error(`缺失必填字段: ${missingFields.join(', ')}`);
    }

    // 优化姓名拆分逻辑(兼容单字名、中间名)
    const nameParts = data.full_name.trim().split(/\s+/);
    const firstName = nameParts[0];
    const lastName = nameParts.length > 1 ? nameParts.slice(1).join(' ') : '';

    sheet.appendRow([new Date(), data.current_employer, firstName, lastName, data.occupation, data.email]);
    
    return ContentService.createTextOutput(JSON.stringify({result: 'success'})).setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    Logger.log("Error: " + error.message);
    return ContentService.createTextOutput(JSON.stringify({result: 'error', message: error.message})).setMimeType(ContentService.MimeType.JSON);
  }
}

调试技巧

  • 在GAS中通过「查看」→「日志」查看最新请求记录,确认是否有请求进入
  • 若手动测试成功但RocketReach触发失败,联系RocketReach支持确认其Webhook是否正常发送请求,以及是否存在IP/防火墙限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:53:12