Как правильно отформатировать рабочий javascript для Code by Zapier

Я пытаюсь воссоздать простой цикл 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?

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
414
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вместо того, чтобы просто перебирать совпадения, вы хотите что-то сделать с каждым из них и получить результат. Лучший способ сделать это — функция .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, но, надеюсь, понятно, что происходит.

Спасибо за подробный ответ! Ваш пример проясняет ситуацию, и я вернусь к этому. Однако, в то время как крайний срок был в крайнем случае, я в конечном итоге использовал парсер электронной почты Zapier, а затем отправил отдельные пары «ключ-значение» в качестве веб-перехватчика к моему API через Zapier. Тот факт, что Zapier предоставляет парсер электронной почты в качестве отдельного (и бесплатного) инструмента, является фантастическим. Люби меня немного Zapier! Спасибо, @xavdid!

AN020C 31.05.2019 19:39

Другие вопросы по теме