Я пытаюсь воссоздать простой цикл javascript для запуска в Zapier.
Мои навыки Javascript, скорее всего, сделают меня «опытным, но все еще новичком», поэтому преобразование этого для правильной работы в Zapier оказалось довольно сложным. Мой код работает, как и ожидалось, пока я не попытаюсь переписать его с учетом требований Zapier.
В приведенном ниже примере я заменил inputData фиктивным текстом в «input».
Вот пример моей рабочей модели в JS:
const input = "Company Name: Shire Homes, Inc. | First Name: Frodo
| Last Name: Baggins |"
const fout = input.match(/\: (.*?) \|/g)
for (let i = 0; i < fout.length; i++) {
console.info(fout[i].slice(2, -2))
}
Какие журналы:
Шир Хоумс, Инк. Фродо Бэггинс
Поскольку Zapier требует, чтобы данные возвращались, вместо перебора каждой строки с регулярным выражением я получаю только первую строку, а затем она останавливается. Как бы это переписать, чтобы оно правильно работало в Zapier?
Мне нужно возвращать каждую итерацию как строковое значение, так как я собираюсь вставлять данные в другом месте.
Заранее спасибо!
Отличный вопрос!
Вместо того, чтобы просто перебирать совпадения, вы хотите что-то сделать с каждым из них и получить результат. Лучший способ сделать это — функция .map
(документы).
И, как вы упомянули, вам нужно что-то вернуть из всей функции. Есть несколько вариантов, и то, что вы хотите, зависит от того, что в конечном итоге будет делать Zap.
"Shire Homes, Inc.,Frodo,Baggins"
), чтобы использовать ее все сразу, вам нужно присоединиться к ней.Итак, давайте посмотрим на код!
// this is handled by Zapier already, but we need the variable to test it
const inputData = {text: "Company Name: Shire Homes, Inc. | First Name: Frodo | Last Name: Baggins |"}
const rawSegments = inputData.text.match(/\: (.*?) \|/g)
const segments = rawSegments.map(s => s.slice(2, -2))
// probably want to return an object
// option 1
// return {result: segments.join('')}
// option 2; probably don't want this
// return segments
// option 3; probably the best, but depends on the data being in the same order every time
return {
company: segments[0],
fname: segments[1],
lname: segments[2]
}
Там есть некоторое сокращение JS, но, надеюсь, понятно, что происходит.
Спасибо за подробный ответ! Ваш пример проясняет ситуацию, и я вернусь к этому. Однако, в то время как крайний срок был в крайнем случае, я в конечном итоге использовал парсер электронной почты Zapier, а затем отправил отдельные пары «ключ-значение» в качестве веб-перехватчика к моему API через Zapier. Тот факт, что Zapier предоставляет парсер электронной почты в качестве отдельного (и бесплатного) инструмента, является фантастическим. Люби меня немного Zapier! Спасибо, @xavdid!