Ken*_*nny 5 javascript json zapier
我需要使用 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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
数组的大小是动态的。
问题是,当我在钩子中导入这些数据时,它给了我
data
title: Two Down, One to Go
type: Left
title: Talk the Talk
type: Right
title: Know the Ropes
type: Top
Run Code Online (Sandbox Code Playgroud)
所以,基本上它说这data只是所有这些东西组合在一起的一大串。
任何人都可以帮我弄清楚是否可以对此进行 Zap 循环并执行某些操作,例如,将数据插入到工作表中,对于数组中的每个项目?我知道“代码”操作,我选择了 JavaScript,我可以解析出字符串,但这似乎效率不高。另外,实际上,JSON 数组内的对象中会有大量数据。
编辑:解决了!答案如下
所以,第一部分是Catch Raw Hook触发器。这是普通的“Webhooks”,但您必须单击才能显示不太常见的变体。使用Catch Raw 钩,您的数据不会通过 Zapier 应用程序自动转换为变量,您将拥有原始 JSON 数据。
一旦获得原始 JSON,就我而言,您将拥有一个操作,这将是“代码”操作。我正在使用 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);
Run Code Online (Sandbox Code Playgroud)
所以,我的原始数据是一个字符串,它还不是 JSON,所以这行代码使其成为一个 JSON 对象。现在,作为一个对象,我们可以循环它或 .map 或访问“this.that”或任何你想要的东西。
关于 Zapier 中的“代码”,下一个要提到的重要事情是,为了把你的东西拿出来,你return...... 因此,在接下来的几行中,我将返回一个.map函数,该函数返回数组中的每个项目。很难掌握 Zapier 如何处理这个问题,但每次您在该 .map 中循环时,它实际上都会运行您创建的下一个“操作”(例如,向工作表添加一行)。那么,我们就来看看下面的内容:
return myData.data.map(item => {
return item;
});
Run Code Online (Sandbox Code Playgroud)
如果您还记得的话,我在原始问题中列出的原始 JSON 中有一个名为“data”的数组。它将循环遍历该数组,因为我是return执行操作,因此它将为每个循环执行“将行添加到工作表”(在我的情况下),从而将所有数据作为多行插入到电子表格中。
所以完成的代码:
const myData = JSON.parse(inputData.rawJsonData);
return myData.data.map(item => {
return item;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4109 次 |
| 最近记录: |