Цикл после полезной нагрузки webhook в Zapier Code JS - PullRequest
0 голосов
/ 10 октября 2019

В Zapier я создаю zap, который берет новый веб-крючок из быстрых книг, сравнивает его с базой данных и отправляет на веб-сайт, если он существует. Все работает, кроме одной части. Бит JavaScript, который извлекает уникальный идентификатор из полезной нагрузки, берет только последний результат из полезной нагрузки и не обрабатывает как отдельные значения.

inputData.cleanID = webhookInputBodyHere //this is the input from zapier that gives the webhook body


if(inputData.cleanID == null){
  var listArray = [];
  } else{
   var listArray = inputData.cleanID.split("},{"); 
  }
var output = [];
var arrayNos = listArray.length;
var i = 0;
do{
  var thisItem = new String(listArray[i]);
  var thisItemObj = {};
  var getEachId = thisItemObj.record = thisItem;
  output.push({getEachId});
  i++;
}
while (i < arrayNos);

Пример 1 полезной нагрузки (перехват нескольких элементов)

{"eventNotifications":[{"realmId":"SOMEID","dataChangeEvent":{"entities":[ {"name":"Estimate","id":"34371","operation":"Update","lastUpdated":"2019-10-09T13:04:27.000Z"}, {"name":"Estimate","id":"34369","operation":"Update","lastUpdated":"2019-10-09T13:04:06.000Z"}, {"name":"Estimate","id":"34370","operation":"Update","lastUpdated":"2019-10-09T13:04:18.000Z"}]}}]}

Пример 2 полезной нагрузки (простой перехват):

{"eventNotifications":[{"realmId":"315179876","dataChangeEvent":{"entities":[ {"name":"Estimate","id":"34370","operation":"Update","lastUpdated":"2019-10-09T13:04:18.000Z"}]}}]}

Я связался со службой поддержки, и они предложили выбрать дочерний ключ "entity" или "entity.id", оба из которых не смогли выполнить эту работу. Я также пытался использовать эту опцию из стеков, и она больше не работала.

Для пользователей, не являющихся zapier, вы можете создать бесплатную учетную запись, чтобы получить представление о том, о чем я говорюо здесь , создав новый zap и выбрав "zapier webhook" в качестве триггера и "код zapier" в качестве действия.

Время перехвата в QuickBooks для разработчика установлено на минимум, равный 1 минуте, еслиЯ мог бы изменить это, чтобы исправить все, но это, кажется, не вариант.

Итак, подведем итог:

  1. Мой webhook тянет полезную нагрузку 1 илибольше сущностей - TRIGGER

    ---- См. пример 1 или 2 ----

  2. Zapier обрабатывает полезную нагрузку все вместе как одно значение - ISSUE

    ---- Если пример 1 является полезной нагрузкой, мой код будет приводить только к примеру 2 ----

  3. Мне нужно, чтобы каждый "объект" обрабатывался отдельно - ЖЕЛАТЕЛЬНЫЙ ВЫХОД

    ---- пример 1 должен выдавать 3 отдельных объекта для обработки в zap ----

  4. Затем я хочу, чтобы zap запускался для каждого отдельного объекта. ID - ФИНАЛЬНЫЙ РЕЗУЛЬТАТ

1 Ответ

0 голосов
/ 11 октября 2019

Zapier убрал возможность возвращать каждый элемент цикла для каждого дополнительного действия в zap. Поэтому вы должны быть немного креативны, чтобы обойти это, используя TWO ZAPS . Вот решение, которое я получил для работы:

ZAP 1:

Действие (после отправки полезной нагрузки) Запустите Zapier Code JS

const myData = JSON.parse(inputData.cleanID);
return myData.eventNotifications.map(item => { return item; });

Спасибо пользователю Kenny за этот бит кода , который помог разобрать данные

Действие

Создать электронную таблицуСтрок (ы) в Google Sheets

Вам потребуется создать электронную таблицу на диске Google (или в любом zap, в котором можно использовать несколько элементов).

Выберите параметр, который позволяет использовать несколько строк, и выберите свойИдентификатор выводится в виде столбца (и все, что вам может понадобиться) примерно так:

enter image description here

Конец зап.



ZAP 2:

TRIGGER: Новая строка электронной таблицы в Google Sheets

Подключение к листу и идентификатору

ДЕЙСТВИЯ: Что бы вы ни хотели

End Zap

Это лучшее решение, которое я мог найти для этой проблемы навремя. Я хотел использовать MySQL, но у zapier пока нет решения для этого. Это приводит к тому, что вам приходится использовать на 2 задачи больше, чем исходная опция кода JS, но это действительно все, что мы можем сделать пока пока zapier не предоставит нам что-то.

...