【问题标题】:How to access specific line item value from Xero in a custom Zapier app?如何在自定义 Zapier 应用程序中从 Xero 访问特定订单项值?
【发布时间】:2021-07-30 00:59:26
【问题描述】:

我正在构建一个自定义 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",
          "City": "",
          "Region": "",
          "PostalCode": "",
          "Country": "",
          "AttentionTo": ""
        }
      ],
      "Phones": [
        {
          "PhoneType": "DDI",
          "PhoneNumber": "",
          "PhoneAreaCode": "",
          "PhoneCountryCode": ""
        },
        {
          "PhoneType": "DEFAULT",
          "PhoneNumber": "",
          "PhoneAreaCode": "",
          "PhoneCountryCode": ""
        },
        {
          "PhoneType": "FAX",
          "PhoneNumber": "0014I000023R123",
          "PhoneAreaCode": "",
          "PhoneCountryCode": ""
        },
        {
          "PhoneType": "MOBILE",
          "PhoneNumber": "",
          "PhoneAreaCode": "",
          "PhoneCountryCode": ""
        }
      ],
      "UpdatedDateUTC": "/Date(1618586879300+0000)/",
      "ContactGroups": [],
      "IsSupplier": false,
      "IsCustomer": true,
      "ContactPersons": [],
      "HasAttachments": false,
      "Attachments": [],
      "HasValidationErrors": false
    }
  ]
}

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

【问题讨论】:

    标签: json zapier xero-api


    【解决方案1】:

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

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

    将为您提供来自第一个(并且只有一个,假设只有一个)联系人的电话列表。

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

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

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

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

    【讨论】:

    • 非常感谢 Albert - 这对我帮助非常大,非常感谢!
    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2020-08-26
    • 1970-01-01
    • 2011-11-28
    • 2012-04-30
    • 2010-09-14
    相关资源
    最近更新 更多