如何通过Zapier

时间:2019-05-30 18:02:05

标签: javascript zapier

我正在尝试重新创建一个简单的JavaScript for循环以在Zapier中运行。

我的Javascript技能可能会使我成为“经验丰富但仍然很新奇”的人,因此将其转换为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要求返回数据,而不是针对正则表达式遍历每个字符串,因此我仅获得第一个字符串,然后停止。如何将其重写以在Zapier中正常运行?

我需要将每个迭代作为字符串值返回,因为我将在其他位置插入数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

好问题!

您不仅要遍历匹配项,还希望对每个匹配项进行处理并获得结果。最好的方法是使用.map函数(docs)。

就像您提到的那样,您需要从整个函数中返回一些内容。有一些选项,您要根据最终Zap的功能进行选择。

  1. 如果您希望输出为单个字符串(例如"Shire Homes, Inc.,Frodo,Baggins")以一次使用所有字符串,则需要将其连接起来。
  2. 如果要单独使用每个项目(例如,一个步骤写“ shire”,而另一步写(“ frodo”),则将它们作为数组返回,结果将成扇形散开,这不太可能。
  3. 如果要在后续的zap(最可能的选项)中分别使用它们,则需要将其放入对象中。

所以让我们看一下代码!

// 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速记,但希望可以清楚发生了什么。