Sheets & Appscripts Hubspot POST 带有身份验证令牌问题的请求

Sheets & Appscripts Hubspot POST Request with Authentication Token Problem

我创建了一个 GAS 应用程序来从我们的 Hubspot 实例提供更好的管道报告。到目前为止,该应用程序运行正常,我已经成功创建了一个显示在 Google 工作表中的销售管道。我正在尝试添加一项功能,该功能需要 POST 方法来查询 Hubspot 的 CRM V3。我让它在 Postman 中工作,但无法在 GAS 中复制它。

我得到的错误是 "Authentication credentials not found." headers 打印到日志,所以我假设它们生成正确。我的猜测是我的访问令牌和有效负载在请求期间没有正确传递给 API。任何有关此事的帮助将不胜感激。

function getConversions() {

  // Prepare authentication to Hubspot
  var service = getService();
  var headers = {headers: {'Authorization': 'Bearer ' + service.getAccessToken()}};
  Logger.log(headers);
    

var raw = JSON.stringify({"filterGroups":[{"filters":[{"propertyName":"hs_analytics_last_visit_timestamp","operator":"GT","value":"1561514165666"}]}],"limit":100,"after":0});  
  
var options = {
  'method' : 'post',
  headers: headers,
  'contentType': 'application/json',
  // Convert the JavaScript object to a JSON string.
  body : raw,
  redirect: 'follow',
  "muteHttpExceptions": true
};
var response = UrlFetchApp.fetch('https://api.hubapi.com/crm/v3/objects/contacts/search?', options);
var result = JSON.parse(response.getContentText());
    Logger.log(result);

 
};
  

这个修改怎么样?

修改点:

  • 当我检查the official document of Search of HubSpot API时,我找到了卷曲样本。当此示例转换为 Google Apps 脚本时,我注意到您的脚本中有几个修改点。

    • UrlFetchApp.fetch 没有 bodyredirect.
    • 的属性
    • 关于followRedirects,官方文档是这样说的

      If false the fetch doesn't automatically follow HTTP redirects; it returns the original HTTP response. The default is true.

  • 在您的 URL 中,使用了 https://api.hubapi.com/crm/v3/objects/contacts/search?。如果不用API键,修改成https://api.hubapi.com/crm/v3/objects/contacts/search怎么样?

当上面的修改反映到你的脚本中,就变成了下面这样。

修改后的脚本:

请修改如下

从:
var options = {
  'method' : 'post',
  headers: headers,
  'contentType': 'application/json',
  // Convert the JavaScript object to a JSON string.
  body : raw,
  redirect: 'follow',
  "muteHttpExceptions": true
};
到:
var options = {
  method : 'post',
  headers: headers,
  contentType: 'application/json',
  payload : raw,
  muteHttpExceptions: true
};

注:

  • 您的脚本需要进行上述修改。但是我担心 Authentication credentials not found. 的错误。在此修改中,它假定您的 service.getAccessToken() 访问令牌可用于此请求。看官方文档的时候,API键也可以用。如果无法使用访问令牌,那么使用 API 密钥怎么样?就像下面这样。
    • https://api.hubapi.com/crm/v3/objects/contacts/search?hapikey=YOUR_HUBSPOT_API_KEY

参考文献:

function getConversions() {

  // Prepare authentication to Hubspot
  var service = getService();
  var headers = {headers: {'Authorization': 'Bearer ' + service.getAccessToken()}};
  var url = 'https://api.hubapi.com/crm/v3/objects/contacts/search'
  //Logger.log(headers);
    

var raw = {"filterGroups":[{"filters":[{"propertyName":"hs_analytics_last_visit_timestamp","operator":"GT","value":"1561514165666"}]}],"limit":100,"after":0};  
  
var options = {
  method : 'post',
  contentType: "application/json",
  // Convert the JavaScript object to a JSON string.
  payload : JSON.stringify(raw),
  muteHttpExceptions: true
};
var response = UrlFetchApp.fetch('https://api.hubapi.com/crm/v3/objects/contacts/search?hapikey=myapikey',options);
var result = JSON.parse(response.getContentText());
  Logger.log(response)  
  Logger.log(result);


};