Есть ли способ передать массив, возвращенный из GET на предыдущем шаге, на шаг Code Action в Zapier?

Использование пользовательского интерфейса Zapier для настройки zap.


Обновленная информация о zap-потоке по запросу:

  1. - это триггер ловушки, который срабатывает, когда пользователь выполняет определенное действие в исходном приложении.
  2. - это вызов API GET для приложения, которое получает подписки пользователей. Для каждого пользователя возвращается массив подписок.
  3. это мой проблемный шаг - я хотел бы выполнить поиск в массиве, чтобы проверить, соответствует ли какая-либо из подписок определенной целевой строке.
  4. условный прогресс. Проверьте результат шага 3. Если в массиве обнаружено совпадение, больше не предпринимайте действий, они уже подписаны. Если нет, продолжайте.
  5. Отправьте POST, чтобы подписать пользователя на целевую подписку.

У меня есть GET, который возвращает массив объектов, затем я хочу выяснить, имеет ли какой-либо из объектов идентификатор, который соответствует строке идентификатора моей целевой категории. Если я выберу inputData.categoryId, я не смогу получить весь массив. Мне нужно принять меры, если ИД категории НЕТ в массиве. Есть ли способ передать всю полезную нагрузку 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",
  }
]

person PauleneC    schedule 02.09.2019    source источник
comment
Можете ли вы обновить свой вопрос изображением / описанием каждого шага в вашем записке? Какой триггер, какое действие (я), какое действие вы хотите изменить и т. Д.   -  person xavdid    schedule 02.09.2019


Ответы (2)


Вот Дэвид из команды Zapier Platform.

Вместо того, чтобы разбираться с тем, как 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')};
person xavdid    schedule 02.09.2019
comment
Спасибо за вашу помощь. Я использовал GET, потому что у него есть встроенные заголовки, которые мне нужно передать, поэтому мне также придется программно отправлять свой токен. - person PauleneC; 03.09.2019
comment
Понятно! Может быть способ передавать данные между шагами, но ИМО, выясняя, как именно управлять этим, будет больше проблем, чем оно того стоит. - person xavdid; 03.09.2019

Вместо использования Zapier UI для вашего «GET» вам следует подумать об использовании для этого кода Python. Почтальон может легко перевести ваш запрос из приложения в код Python.

Если вы это сделаете, вывод вашего python «GET» будет массивом dic. Должно получиться так:

url ="yoururl"
params= {"key":"value"}
payload = {"key":"value"}
headers = {"key":"value"}
response = requests.request("GET", url, data=payload, headers=headers)
person Alexandre Le Bris    schedule 02.09.2019
comment
Спасибо за Ваш ответ. GET - это всего лишь часть серии автоматических действий, которые происходят при срабатывании веб-перехватчика, поэтому его нужно запускать автоматически. - person PauleneC; 03.09.2019