【问题标题】:Is there a way to pass an array returned from a GET in a previous step to a Code Action step in Zapier?有没有办法将从上一步中的 GET 返回的数组传递给 Zapier 中的代码操作步骤?
【发布时间】:2023-03-06 17:48:01
【问题描述】:

使用 Zapier 用户界面设置 zap。


按要求更新了有关 zap 流的信息:

  1. 是当用户在源应用程序中执行特定操作时触发的 catch 挂钩触发器。
  2. 是对获取用户订阅的应用程序的 GET API 调用。对于每个用户,都会返回一个订阅数组。
  3. 是我的问题步骤 - 我想搜索数组以检查是否有任何订阅与特定目标字符串匹配。
  4. 有条件的进展。检查第 3 步的结果。如果数组中有匹配项,则不再执行任何操作,它们已被订阅。如果没有,请继续。
  5. 发送 POST 以使用户订阅目标订阅。

我有一个返回对象数组的 GET,然后我想查找是否有任何对象的 ID 与我的目标类别 ID 字符串匹配。如果我选择 inputData.categoryId 我无法获得整个数组。如果类别 ID 不在数组中,我需要采取措施。有没有办法可以将 GET 的整个有效负载传递到我的下一个代码操作步骤?

我尝试过传入 inputData.cateogryId,但它会为数组中的每个对象多次运行代码步骤。

我希望能够做这样的事情,其中​​ inputData 是 GET 的有效负载

const userRecords = JSON.parse(inputData);
output = {isNotSubscribed: false};
isNotSubscribed = userRecords.find(o => o.categoryId === 'string 1');

输入数据在一个数组中,看起来像

[
  {
    "id": "string",
    "identifier": "string",
    "name": "string",
    "description": "string",
    "categoryId": "string",
    "contentId": "string",
    "signedDate": "2019-08-30T21:44:30.497Z",
  },
  {
    "id": "string",
    "identifier": "string",
    "name": "string",
    "description": "string",
    "categoryId": "string",
    "contentId": "string",
    "signedDate": "2019-08-30T21:44:30.497Z",
  },
  {
    "id": "string",
    "identifier": "string",
    "name": "string",
    "description": "string",
    "categoryId": "string",
    "contentId": "string",
    "signedDate": "2019-08-30T21:44:30.497Z",
  }
]

【问题讨论】:

  • 你能用一张图片/描述你的 zap 中的每一步是什么来更新你的问题吗?哪个触发器、哪个操作、您要更改哪个操作等。

标签: javascript arrays zapier


【解决方案1】:

David 来自 Zapier 平台团队。

与其处理 Zapier 在步骤之间序列化数据的方式,我将删除上面的步骤 2 并将其折叠到 JS 代码步骤中。这样,整个代码将是:

// normally you'd need to wrap this in an `async` function, but Zapier does that for you
const res = await fetch('https://somesite.com/data');
const userRecords = await res.json();
return {isNotSubscribed: userRecords.find(o => o.categoryId === 'string 1')};

【讨论】:

  • 感谢您的帮助。我使用 GET 是因为它具有我需要传递的内置标头,因此我也必须以编程方式发送我的令牌。
  • 知道了!可能有一种方法可以在步骤之间传递数据,但 IMO 确切地弄清楚如何管理这将比它的价值更麻烦。
【解决方案2】:

您应该考虑使用 Python 代码来完成“GET”,而不是使用 Zapier UI。 Postman 可以轻松地将您的请求从应用程序转换为 Python 代码。

如果这样做,python“GET”的输出将是一个 dic 数组。它应该是这样的:

url ="yoururl"
params= {"key":"value"}
payload = {"key":"value"}
headers = {"key":"value"}
response = requests.request("GET", url, data=payload, headers=headers)

【讨论】:

  • 感谢您的回答。 GET 只是触发 webhook 时发生的一系列自动化操作的一部分,因此它需要自动运行。
猜你喜欢
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 2021-01-09
  • 2019-12-09
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多