如何在自定义 Zapier 应用程序中从 Xero 访问特定的订单项值?

问题描述

我正在构建一个自定义 Zapier 应用,需要通过 Xero API 获取特定的嵌套值。

我的 API 端点设置如下:

const options = {
  url: `https://api.xero.com/api.xro/2.0/Contacts/${bundle.inputData.ContactID}`,method: 'GET',headers: {
    'Content-Type': 'application/json','Accept': 'application/json','Authorization': `Bearer ${bundle.authData.access_token}`,'xero-tenant-id': process.env.TENANT_ID
  },}

return z.request(options)
  .then((response) => {
    response.throwForStatus();
    const results = response.json;



    return results;
  });

这又回来了:

  "Id": "8092d924-6ce1-415e-9a45-f61294c17bc7","Status": "OK","ProviderName": "Commission statements","DateTimeUTC": "/Date(1620408485950)/","Contacts": [
    {
      "ContactID": "fd9c3e88-4128-4d68-94f6-d40eef08d3b2","AccountNumber": "1846","ContactStatus": "ACTIVE","Name": "xxx","FirstName": "","LastName": "","EmailAddress": "xxx@test.com","BankAccountDetails": "","Addresses": [
        {
          "Addresstype": "STREET","City": "","Region": "","PostalCode": "","Country": "","AttentionTo": ""
        },{
          "Addresstype": "POBox","AttentionTo": ""
        }
      ],"Phones": [
        {
          "PhoneType": "DDI","PhoneNumber": "","PhoneAreaCode": "","PhoneCountryCode": ""
        },{
          "PhoneType": "DEFAULT",{
          "PhoneType": "FAX","PhoneNumber": "0014I000023R123",{
          "PhoneType": "MOBILE","PhoneCountryCode": ""
        }
      ],"UpdatedDateUTC": "/Date(1618586879300+0000)/","ContactGroups": [],"Issupplier": false,"IsCustomer": true,"ContactPersons": [],"HasAttachments": false,"Attachments": [],"HasValidationErrors": false
    }
  ]
}

仅当 PhoneType 为 FAX 时,我才需要在 Phones 中返回“PhoneNumber”的值。所以在这种情况下,我需要返回 0014I000023R123。我真的在为如何实现这一点的语法而苦苦挣扎(我首先是营销人员,最重要的是不是开发人员!)。非常感谢这里的任何帮助,谢谢。

解决方法

我不太擅长 Javascript,但以下应该可行:

var phoneList = results.Contacts[0].Phones;

将从第一个(也是唯一的,假设只有一个)联系人中获取电话列表。

var fax = phoneList.filter(function (phone) {
    return phone.PhoneType == "FAX";
})[0].PhoneNumber;

将过滤电话列表并返回第一个带有 PhoneType == FAX 的电话,然后获取该电话的电话号码。

因此,在这种情况下,传真将等于 0014I000023R123,您可以将其返回。

希望这个答案有帮助,可能有更漂亮的方法来做到这一点,但我已经对其进行了测试并且可以正常工作。