我需要使用Zapier Webhook接收一些传入的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数组中的对象中将有很多数据。
编辑:已解决!下面的答案
答案 0 :(得分:2)
因此,第一部分是进入Catch Raw Hook
进行触发。这是正常的“ Webhooks”,但是您必须单击以显示不太常见的变体。使用 Catch Raw Hook ,您的数据将不会通过Zapier应用自动转换为变量,您将获得原始JSON数据。
一旦有了原始的JSON,就我而言,您将有一个动作,这就是“代码”动作。我正在使用JavaScript。在我的模板中,我正在获取整个JSON字符串(您现在导入的整个JSON是一个字符串,而不是对象,因此我们不能使用“ 。”(点)表示法来访问部件的)。
您需要JSON.parse()
代码中的字符串。但是首先,让我解释一下Zapier有一个预定义变量inputData
,您将在代码中使用它。然后,在“代码” Action 的“编辑模板”部分的顶部,您将看到可以命名导入的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”的数组。它将遍历该数组,并且由于我正在return
进行操作,因此它将为每个循环执行“将行添加到工作表”(以我为例),因此,将所有数据作为多行插入到我的电子表格。
因此,完成的代码:
const myData = JSON.parse(inputData.rawJsonData);
return myData.data.map(item => {
return item;
});