我似乎想不通这件事。下面是我的JSfiddle代码,它可以完美地将数据发送到控制台。我知道我的zapier应用程序正在通过身份验证。如果我回来,我会得到200分的成功
var stuff =
{
"uri":"some URL here",
"action":"EXPORT",
"result":
{
"column_order":["Name","email","TimeStamp"],
"rows":[
["ted2","ted2@example.com","06 Feb, 2018 04:37:16"],
["jimf","jimf@example.com","06 Feb, 2018 19:03:39"]
]
}
};
var results2 = [];
for (var j = 0; j < stuff.result.rows.length; j++)
{
var result = {};
for (var i = 0; i < stuff.result.column_order.length; i++)
{
result['"' + stuff.result.column_order[i] + '"'] = stuff.result.rows[j][i];
}
results2.push(result);
}
console.log(results2);它会吐出:
{
"Name": "ted2",
"email": "ted2@example.com",
"TimeStamp": "06 Feb, 2018 04:37:16"
}{
"Name": "jimf",
"email": "jimf@example.com",
"TimeStamp": "06 Feb, 2018 19:03:39"
}现在,如果我尝试将它转换为Zapier Post的投票函数,我总是得到错误: Javascript Exception:TypeError: Cannot read property 'rows' of undefined。
这是我的Zapier Post Poll函数。我遗漏了什么?For循环不会有同样的效果。
email_post_poll: function(bundle){
var response = z.JSON.parse(bundle.response.content);
var results2 = [];
for (var j = 0; j < response.result.rows.length; j++)
{
var result = {};
for (var i = 0; i < response.result.column_order.length; i++)
{
result['"' + response.result.column_order[i] + '"'] = response.rows[j][i];
}
results2.push(result);
}
return results2 || [];
}发布于 2018-02-07 06:36:14
我是David,来自Zapier平台团队。
您的问题在for循环中,您调用的是应该为= response.result.rows[j][i]的= response.rows[j][i]。如果这还不清楚,我建议使用console.log来确保您知道响应中的实际内容。
顺便说一句,数组在js中是真的,所以results2 || []永远不会返回右边的空数组。
发布于 2018-02-07 10:58:42
我把它弄好了。bundle.response.content有一个父数组的"response“在所有东西之上。所以我不得不叫“response.response”为所有的事。使用戴夫的console.log建议帮助我解决了这个问题,但您只能在脚本工具中看到控制台日志,然后是“捆绑日志”。我想这只是一个平台的学习曲线。
email_post_poll: function(bundle){
var response = z.JSON.parse(bundle.response.content);
var results2 = [];
console.log(response.response.result.rows.length);
for (var j = 0; j < response.response.result.rows.length; j++)
{
var results3 = {};
for (var i = 0; i < response.response.result.column_order.length; i++)
{
results3['"' + response.response.result.column_order[i] + '"'] = response.response.result.rows[j][i];
}
results2.push(results3);
}
return results2;https://stackoverflow.com/questions/48651906
复制相似问题