首页 > 解决方案 > 无法从 Hubspot 联系人 API 检索联系人地址数据

问题描述

我正在使用 Google Apps 脚本来访问 Hubspot 联系人 API,并且一切正常:

 var firstName = (item.properties.hasOwnProperty('firstname')) ? item.properties.firstname.value : "NA";
 var lastName = (item.properties.hasOwnProperty('lastname')) ? item.properties.lastname.value : "NA";
 var fullName = firstName + " " + lastName; 
 var companyName = (item.properties.hasOwnProperty('company')) ? item.properties.company.value : "NA";

...但我似乎无法查询与联系人地址相关的任何内容。

 var streetAddress = (item.properties.hasOwnProperty('address')) ? item.properties.address.value : "NA";
 var cityName = (item.properties.hasOwnProperty('city')) ? item.properties.city.value : "NA";
 var stateName = (item.properties.hasOwnProperty('state')) ? item.properties.state.value : "NA";
 var postalCode = (item.properties.hasOwnProperty('zip')) ? item.properties.zip.value : "NA";

streetAddress, cityName, stateName,postalCode似乎没有从我的 API 查询中返回任何内容。但是firstName,,一切正常lastNamecompanyName我之前在检索电子邮件时遇到了一些麻烦,并在网上找到了解决方案。

任何想法为什么我的查找和分配 Hubspot 地址信息的代码不起作用?

这是我当前的 URL 查询(两个 URL 具有相同的效果,但顶部的 URL 较新,我认为如果我更具体地使用 API,我可以获得正确的属性):

var url_query = API_URL + "/contacts/v1/lists/all/contacts/all?properties=address&properties=firstname&properties=lastname&properties=company&properties=city&properties=state&properties=zip";
//var url_query = API_URL + "/contacts/v1/lists/all/contacts/all";

 response.contacts.forEach(function(item) {
 var vid = item.vid;
  
 var firstName = (item.properties.hasOwnProperty('firstname')) ? item.properties.firstname.value : "NA";
 var lastName = (item.properties.hasOwnProperty('lastname')) ? item.properties.lastname.value : "NA";
 var fullName = firstName + " " + lastName; 
 var companyName = (item.properties.hasOwnProperty('company')) ? item.properties.company.value : "NA";
 var streetAddress = (item.properties.hasOwnProperty('address')) ? item.properties.address.value : "NA";
 var cityName = (item.properties.hasOwnProperty('city')) ? item.properties.city.value : "NA";
 var stateName = (item.properties.hasOwnProperty('state')) ? item.properties.state.value : "NA";
 var postalCode = (item.properties.hasOwnProperty('zip')) ? item.properties.zip.value : "NA";
 Logger.log(fullName,streetAddress,cityName,stateName,postalCode);
 
 var email = "NA";     
  // Not sure why, but a contact might have multiple identity-profiles, we take the firstone
  item['identity-profiles'][0].identities.forEach(function(identity) {
    if (identity.type == "EMAIL") {
      email = identity.value;
    }
  });

标签: google-apps-scripthubspothubspot-crm

解决方案


这看起来像是一个简单的错误,即在 URL 中不包含所需的属性。根据文档

默认情况下,响应数据中只会包含几个标准属性。如果您包含 'property' 参数,那么您将改为在响应中获取指定的属性。可以多次包含此参数以指定多个属性。

您似乎错误地在 URL 中使用了无效的“属性”参数。以下是我将如何调整代码:

var url_query = API_URL + "/contacts/v1/lists/all/contacts/all?property=address&property=firstname&property=lastname&property=company&property=city&property=state&property=zip";

response.contacts.forEach(function(item) {
    var p = item.properties;

    var firstName = (p.hasOwnProperty('firstname')) ? p.firstname.value : "NA";
    var lastName = (p.hasOwnProperty('lastname')) ? p.lastname.value : "NA";
    var fullName = firstName + " " + lastName;
    var companyName = (p.hasOwnProperty('company')) ? p.company.value : "NA";
    var streetAddress = (p.hasOwnProperty('address')) ? p.address.value : "NA";
    var cityName = (p.hasOwnProperty('city')) ? p.city.value : "NA";
    var stateName = (p.hasOwnProperty('state')) ? p.state.value : "NA";
    var postalCode = (p.hasOwnProperty('zip')) ? p.zip.value : "NA";

    var email = "NA";
    // Not sure why, but a contact might have multiple identity-profiles, we take the firstone
    item['identity-profiles'][0].identities.forEach(function(identity) {
        if (identity.type == "EMAIL") {
            email = identity.value;
        }
    });
});

请注意,此 API 将很快被更新的 CRM API取代,因此,如果这是一个新项目,您可能不想在使用旧 API 调用的代码中投入太多工作!


推荐阅读