поиск zapier для перебора массива

Мы используем zapier для отправки счета из Quickbooks Online (QBO) в ShipStation (SS). Все отображается нормально, кроме поля SKU (которое QBO почему-то не проходит). Поэтому я создал поиск, используя multi-zap и Formatter Utility, чтобы сопоставить описание с таблицей описания / артикула, которую я сделал.

Ограничение состоит в том, что утилита Formatter запускается только один раз и не выполняет итерацию по массиву полезной нагрузки. В техподдержке мне сказали, что это можно сделать с помощью утилиты кода, но я не знаю, как это сделать. Идеи?


person jöhg    schedule 03.12.2016    source источник
comment
Привет! Как правило, лучший способ получить поддержку — это электронная почта contact@, но я с удовольствием пройдусь по некоторым материалам кода здесь. Zapier Code может работать как на Python, так и на Javascript. У вас есть предпочтения?   -  person xavdid    schedule 14.12.2016
comment
Я думаю, что JavaScript более доступен для людей и более широко поддерживается.   -  person jöhg    schedule 14.12.2016
comment
Отлично, имеет смысл. Я просмотрел, как на самом деле отправляются массивы, и, вероятно, проще всего сделать второй zap, который ловит веб-хук и выполняет 1 ввод SS для каждого SKU. Если это имеет смысл, и вы согласны с этим, я могу опубликовать ответ с этим кодом.   -  person xavdid    schedule 14.12.2016
comment
Я не уверен, как это сделать, но это звучит как отличный вариант, если вы можете заставить его работать. Спасибо большое за вашу помощь!!   -  person jöhg    schedule 14.12.2016


Ответы (1)


Итак, лучшим подходом здесь будет использование 2 разных разрядников.

Zap A переместится с триггером QBO, пройдет через ваши фильтры, и последним шагом будет кодовое действие. Zap B будет иметь триггер «Catch Webhook» и действие ShipStation. Давайте пройдемся по ним.

Zap A имеет шаг кода, который принимает входные данные. Это будут все ваши SKU, разделенные запятыми.

Шаг кода будет выглядеть примерно так:

var skus = inputData.skus.split(',') // now it's an actual array
var otherZapUrl = 'https://zapier.com/catch/12345'

var lookupTable = {
  1: 'New York',
  2: 'Chicago',
  3: 'Los Angeles'
}

skus.map(function(sku){
  var payload = {
    sku: lookupTable[sku] || 'default',
    // other data you want to send along
    // name: inputData.name
  };
  fetch(otherZapUrl, {method: 'POST', body: JSON.stringify(payload)});
})

return [{status: 'ok'}] // this is so the editor doesn't complain

Ваш второй zap поймает вебхук и заполнит поля SS, которые вы ожидаете. Надеюсь, это просто.

Что касается того, что вам нужно сделать, вам нужно будет переделать свою таблицу поиска в javascript (извините) и заменить otherZapUrl на конечную точку Zap B. Кроме того, убедитесь, что вы указали все данные, которые хотите передать в SS, в объекте inputData кода.

Как это выглядит?

person xavdid    schedule 15.12.2016
comment
Это выглядит великолепно и, похоже, будет работать... и что потребуется совсем немного времени и усилий, чтобы устранить все ошибки. Я попытаюсь обновить здесь, когда закончу. Спасибо @xavdid! - person jöhg; 16.12.2016
comment
Большой. Дайте мне знать, если вам нужно что-нибудь еще! - person xavdid; 18.12.2016
comment
Я работаю над этим и не могу понять, как сопоставить описание для каждого элемента строки, поступающего из QBO (zapier называет этот объект «Имя ссылки на элемент строки сведений о строке продаж») с SKU. Я предполагаю, что inputData.skus.split разделит «Ссылочное имя элемента строки сведений о товаре строки» в массив js. Разве в lookupTable не должно быть два элемента: описание (объект, который мы перехватываем из QBO) и соответствующая таблица SKU для сопоставления? Я не уверен, как использовать вашу функцию, чтобы связать объект массива с SKU, которые мне нужно жестко закодировать в шаге кода. - person jöhg; 29.01.2017