有没有办法将从上一步中的 GET 返回的数组传递到 Zapier 中的代码操作步骤?

Is there a way to pass an array returned from a GET in a previous step to a Code Action step in Zapier?

使用 Zapier UI 设置 zap。


根据要求更新了关于 zap 流的信息:

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

我有一个 returns 对象数组的 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",
  }
]

您应该考虑使用 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)

来自 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')};