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

使用Google Apps Script从Google Sheets向Hubspot创建营销事件API报错求助

问题:Google Apps Script调用HubSpot营销事件API失败排查

需求

从Google Sheets单元格提取数据,在HubSpot「联系人→联系人→营销事件」模块创建营销事件(如网络研讨会数据)。

已执行操作

  • 创建私有应用并获取token,测试阶段开放所有权限
  • 从HubSpot私有应用页面提取8位账号编号
  • 尝试使用端点:https://api.hubapi.com/marketing/v3/marketing-events/attendance/NUMBER//email-create

现有代码

//loads data to Hubspot
function loadData(email,eventName,startDateTime,timeEvent,type,eventOrganizer,subscriberState) {

var url = 'https://api.hubapi.com/marketing/v3/marketing-events/attendance/NUMBER//email-create';

var body = {
"email": email,
"eventName": eventName, 
"startDateTime": startDateTime, 
"timeEvent": timeEvent, 
"type": type, 
"eventOrganizer": eventOrganizer, 
"subscriberState":subscriberState
}

var option = {
  "muteHttpExceptions" :true,
  "method":"POST",
  'payload': body,
  "headers": {
      "authorization": ’TOKEN’,
      "content-type": "application/json"
  }
}
var response = UrlFetchApp.fetch(url, option); 
}

错误排查与修正方案

1. API端点错误

  • 域名错误:你的账号是欧盟区(app-eu1),需使用欧盟专属API域名https://api.eu1.hubapi.com,而非通用的api.hubapi.com,跨区域请求会直接失败。
  • 格式错误:端点中存在多余的双斜杠//,正确格式应为https://api.eu1.hubapi.com/marketing/v3/marketing-events/attendance/{portalId}/email-create,需将{portalId}替换为你的8位账号编号。

2. 请求体格式错误

Google Apps Script中,当指定content-type: application/json时,必须将payload转换为JSON字符串,直接传入JS对象会默认以表单格式发送,不符合API要求。需修改为:

"payload": JSON.stringify(body)

3. 身份验证头错误

  • 私有应用token需以Bearer 前缀开头,正确格式为"authorization": "Bearer YOUR_PRIVATE_APP_TOKEN"。
  • 代码中使用了中文单引号’,需替换为英文单引号'或双引号",否则会导致语法错误。

4. 请求字段不符合API规范

HubSpotemail-create端点仅接受特定字段,多余字段会被忽略或触发报错:

  • 移除timeEvent、type、eventOrganizer等非标准字段,若需传递自定义数据,需放入properties对象中。
  • 确保subscriberState取值为API允许的枚举值:REGISTERED、ATTENDED、NO_SHOW、CANCELLED。

5. 缺少调试日志

开启muteHttpExceptions: true后,需添加日志输出查看错误详情,便于定位问题:

Logger.log("状态码: " + response.getResponseCode());
Logger.log("响应内容: " + response.getContentText());

修正后的完整代码

//loads data to Hubspot
function loadData(email, eventName, startDateTime, timeEvent, type, eventOrganizer, subscriberState) {
  // 替换为你的8位账号编号
  const portalId = "YOUR_PORTAL_ID";
  // 替换为你的私有应用token
  const privateAppToken = "YOUR_PRIVATE_APP_TOKEN";

  // 欧盟区正确API端点
  var url = `https://api.eu1.hubapi.com/marketing/v3/marketing-events/attendance/${portalId}/email-create`;

  var body = {
    "email": email,
    "eventName": eventName, 
    "startDateTime": startDateTime, 
    "subscriberState": subscriberState,
    // 自定义字段放入properties
    "properties": {
      "timeEvent": timeEvent,
      "type": type,
      "eventOrganizer": eventOrganizer
    }
  };

  var option = {
    "muteHttpExceptions": true,
    "method": "POST",
    "payload": JSON.stringify(body),
    "headers": {
      "authorization": `Bearer ${privateAppToken}`,
      "content-type": "application/json"
    }
  };

  var response = UrlFetchApp.fetch(url, option);
  // 输出调试信息
  Logger.log("状态码: " + response.getResponseCode());
  Logger.log("响应内容: " + response.getContentText());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:25:21