Как правильно отформатировать рабочий JavaScript для кода от Zapier - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь воссоздать простой 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.log(fout[i].slice(2, -2))
}

Какойlogs:

Shire Homes, Inc. Фродо Бэггинс

Поскольку Zapier требует, чтобы данные возвращались, вместо того, чтобы перебирать каждую строку с регулярным выражением, я получаю только первую строку и затем она останавливается,Как можно переписать это, чтобы правильно функционировать в Zapier?

Мне нужно возвращать каждую итерацию в виде строкового значения, поскольку я собираюсь вставлять данные в другое место.

Заранее спасибо!

1 Ответ

0 голосов
/ 31 мая 2019

Отличный вопрос!

Вместо того, чтобы просто повторять матчи, вы хотите что-то сделать с каждым из них и получить результат. Лучший способ сделать это - функция .map ( документы ).

И, как вы упомянули, вам нужно вернуть что-то из всей функции. Есть несколько вариантов, которые вы хотите, зависит от того, что будет делать возможный Zap.

  1. Если вы хотите, чтобы вывод представлял собой одну строку (например, "Shire Homes, Inc.,Frodo,Baggins"), чтобы использовать все сразу, тогда вы захотите присоединиться к ней.
  2. Если вы хотите использовать каждый элемент отдельно (например, один шаг записывает «shire», а другой пишет («frodo»), вы вернете их в виде массива, и результат будет разнесен. Вряд ли вы этого захотите).
  3. Если вы хотите использовать каждый из них отдельно в последующих zaps (наиболее вероятный вариант), то вы захотите поместить его в объект.

Итак, давайте посмотрим на код!

// 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, но, надеюсь, понятно, что происходит.

...