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
没有 body
和 redirect
. 的属性
关于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);
};
我创建了一个 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
没有body
和redirect
. 的属性
关于
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);
};