如何正确格式化 working javascript for Code by Zapier

How to properly format working javascript for Code by Zapier

我正在尝试在 Zapier 中重新创建到 运行 的简单 javascript for 循环。

我的 Javascript 技能可能会将我定位为 "experienced but still newbish",因此将其转换为在 Zapier 中正常运行已被证明相当困难。我的代码按预期运行,直到我尝试使用 Zapier 的要求重写它。

对于下面的示例,我已将 "input" 中的 inputData 替换为虚拟文本。

这是我在 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))
}

哪个日志:

Shire Homes, Inc. 佛罗多 巴金斯

由于 Zapier 要求对数据进行 returned,因此我没有针对正则表达式遍历每个字符串,因此我只获取第一个字符串,然后停止。如何重写它才能在 Zapier 中正常运行?

我需要 return 每次迭代都作为字符串值,因为我要在其他地方插入数据。

提前致谢!

好问题!

您不想只是遍历匹配项,而是想对每个匹配项执行一些操作并获得结果。最好的方法是 .map 函数 (docs).

正如您提到的,您需要 return 整个函数中的某些内容。有几个选项,您想要哪个取决于最终的 Zap 将做什么。

  1. 如果您希望输出为单个字符串(例如"Shire Homes, Inc.,Frodo,Baggins")以一次性使用它,那么您将需要加入它。
  2. 如果你想单独使用每一项(比如一步写 "shire" 而另一步写 ("frodo"),你将 return 它们作为一个数组和结果会散开。你不太可能想要这个。
  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 shorthand,但希望它清楚发生了什么。