Zapier将对象数组分解为包含对象键的不同数组



大家好,我对zapier(javascript(的代码有问题。。。(我知道,我知道(

我遇到的问题是,我把我的数据从空中表格中带进来。数据分为三个不同的数组。它们是:

specCategory[]
specName[]
specDescription[]

我对数组进行迭代,并用数组中的逗号将它们分开。然后,我将每个数组中的每个值形成自己的对象。然后我把那个物体推入一个数组。

我的最终目标是将JSON有效载荷推送到PDFMonkey中,格式为:

{
"payload": [
{
specName: "specName data",
specCategory: "specCategory data",
specDescription: "specDescription data"
},
{
specName: "specName data",
specCategory: "specCategory data",
specDescription: "specDescription data"
},
{
specName: "specName data",
specCategory: "specCategory data",
specDescription: "specDescription data"
}
]
}

Zapier似乎为我返回了正确的有效载荷,即一个对象数组。然而,当我在接下来的步骤中访问数据时,数据会再次返回到三个不同的数组中。

以下是zapier代码的输出。

specArray
1
specCategory
Kitchen Appliances
specName
Gas Hob
specDescription
Westinghouse WHG 643 SA Gas Hob
2
specCategory
Kitchen Appliances
specName
Range Hood
specDescription
Westinghouse WRR 614 SA Range Hood
3
specCategory
Kitchen Appliances
specName
Oven
specDescription
Westinghouse WVE 613 S Oven
4
specCategory
Doors and Windows (Internal)
specName
Architraves
specDescription
42X12min Splayed Profile F/Joint Pine painted gloss
5
specCategory
External Stairs
specName
External Stair Balustrade
specDescription
Painted pre-primed ladies waist handrail with slats and bottom rails (not included if stair is under 1m in height)

相反,在接下来的步骤中访问它时,我会收到三个不同的数组,如:

specArraySpecName: specName[1],specName[2],specName[...],
specArraySpecCategory: specCategory[1],specCategory[2],specCategory[...],
specArraySpecDescription: specDescription[1],specDescription[2],specDescription[...]

这是我的代码,所以你可以看看我做的是不是错了。当我试图只输出对象数组时(而不是首先将数组包装在对象标签中(,它会输出每个对象的单个值,但问题是,每次使用每个对象作为输入时,zapier都会循环执行后续步骤。

有没有一种方法可以使我试图创建的JSON对象变平或字符串化?

我下面的代码供参考:

// this is wrapped in an async function
// you can use await throughout the function

let categories = inputData.specCategories.split(/s*,s*/);
let names = inputData.specName.split(/s*,s*/);
let descriptions = inputData.specDescriptions.split(/s*,s*/);

let specArray = [];

// for loop to input each of the discrete items into an array
for (let i = 0; i < categories.length; i++) {
let spec = {
specCategory: categories[i], 
specName: names[i], 
specDescription: descriptions[i]
specArray.push(spec); 
}   
output = { specArray };

我提前为格式化道歉,但堆栈溢出不允许我发布代码块,因为有些代码格式不正确(尝试了ctrl+k、4个空格、三个反勾号等(,我无法理解。

谢谢你的帮助!

好问题!值得一提的是,这就是Zapier"按预期工作";。。。用于与您的用例不匹配的用例。此行为支持行项目,这是Accounting&电子商务。但是,这对你没有帮助,但你希望Zapier停止扰乱你良好结构的价值观。

处理此问题的最佳方法可能是将整个JSON字符串化。Zapier只破坏数组,所以它不会损坏JSON字符串。

代码中应该是这样的:

// ...
output = { result: JSON.stringify(specArray) };

如果运气好的话,您将能够在PDFMonkey的主体字段中使用该有效载荷,并且它将正确处理!

但是,这就是我在Zapier步骤之间共享JSON的方式,以保持它不被破坏。

最新更新