我需要使用Zapier web钩子来获取一些传入的JSON数据,其中包含一个条目数组,循环该数组,并对每个元素执行一个操作。
下面是一个传入JSON数据的示例:
{
"first_name": "Bryan",
"last_name": "Helmig",
"age": 27,
"data": [
{
"title": "Two Down, One to Go",
"type": "Left"
},
{
"title": "Talk the Talk",
"type": "Right"
},
{
"title": "Know the Ropes",
"type": "Top"
}
]
}数组的大小将是动态的。
问题是,当我在钩子中导入这个数据时,它会给我
data
title: Two Down, One to Go
type: Left
title: Talk the Talk
type: Right
title: Know the Ropes
type: Top因此,它基本上说data只是所有这些东西的一个大串在一起。
有人能帮我找出是否有可能有一个Zap循环,并做一些事情,例如,插入数据到工作表中,永远在数组中的项目?我知道“代码”操作,我选择了JavaScript,它可以解析字符串,但这似乎没有效率。另外,实际上,JSON数组中的对象中有很多数据。
编辑:解决!回答如下:
发布于 2018-09-22 14:13:01
因此,第一部分是以Catch Raw Hook作为触发器。这是正常的"Webhooks",但您必须单击以显示较不常见的变体。使用Catch Raw Hook,您的数据不会通过Zapier应用程序自动转换为变量,您将拥有原始的JSON数据。
一旦您拥有了原始的JSON,在我的例子中,您将有一个操作,这将是"Code“操作。我在用JavaScript。在我的模板中,我获取了整个JSON字符串(您现在导入的整个JSON是一个字符串,而不是一个对象,因此我们不能使用".“(点)符号来访问它的部分)。
您需要在代码中JSON.parse()字符串。但首先,让我解释一下,Zapier有一个名为inputData的预定义变量,您将在代码中使用它。然后,在“代码”操作的“编辑模板”部分的顶部,您将看到可以将导入的JSON字符串的变量命名。
现在是有趣的部分!在代码中,您将键入:
// of course, you can change the variables to what you want
// but 'inputData' is unique, can't change that
const myData = JSON.parse(inputData.rawJsonData); 所以,我的原始数据是一个字符串,它还不是JSON,所以这一行代码使它成为一个JSON对象。现在,作为一个对象,我们可以循环它或.map或访问'this.that‘或任何您想要的东西。
关于Zapier中的“代码”,需要提到的下一件重要的事情是,为了把你的东西拿出来,你return。因此,在接下来的几行中,我将返回一个.map函数,该函数返回数组中的每个项。很难理解Zapier是如何对待这个问题的,但是它实际上运行了您创建的下一个“操作”(例如,在该.map中每次循环时都会向工作表中添加一行)。那么,让我们来看一看:
return myData.data.map(item => {
return item;
});如果您还记得,我在原始JSON中列出了一个名为"data“的数组。它将在该数组上循环,因为我正在returning,因此它将为每个循环执行一个“添加行到表”(在我的例子中),从而将我的所有数据作为多行插入到我的电子表格中。
所以完成的代码:
const myData = JSON.parse(inputData.rawJsonData);
return myData.data.map(item => {
return item;
});https://stackoverflow.com/questions/52433286
复制相似问题