我正在尝试在Zapier中编写一些javascript,它将读取两个日期,然后在这些日期之间返回所有日期的数组,以便它们可以用于在Airtable(数据库)中创建多个日期记录。从Zapier帮助它说如果你返回一个对象数组,那么将为每个对象处理以下步骤。
我已经设法获得了返回我想要的数据的代码,但它无法正确,因为如果我尝试创建数据库记录,则只创建一个 - 所有日期都在(因此只有在输出到文本字段 - 而不是日期)。这是我的代码尝试:
var fromDate = new Date(inputData.from);
var toDate = new Date(inputData.to);
var output =[];
var i = 1;
do {
var useDate = new String(fromDate.toISOString())
output.push(useDate);
console.log(fromDate);
fromDate.setDate(fromDate.getDate() + 1);
i++
}
while (fromDate <= toDate);
console.log(output);
return{output};
后续步骤确实可以看到输出变量 - 但它被视为一个值,如上所述。
有没有人有任何想法?
答案 0 :(得分:1)
谢谢胡安
对它进行了排序 - 或者至少是在删除了返回后执行的 - 这是工作代码:
var fromDate = new Date(inputData.from);
var toDate = new Date(inputData.to);
var output =[];
var i = 1;
do {
var useDate = new String(fromDate.toISOString())
var dateObject = {};
dateObject.date = useDate;
output.push({dateObject});
fromDate.setDate(fromDate.getDate() + 1);
i++
}
while (fromDate <= toDate);
答案 1 :(得分:0)
看起来你正在返回一个对象,而不是一个对象数组:
return{output};
此外,您的do / while语句正在创建字符串数组,而不是对象。在do块中,您应该构造一个简单的对象并将 推送到输出数组,而不是将useDate
字符串推送到output
数组。
因此,每次循环运行时都不要推'2016-09-28T00:00:00.000Z'
,而应该推送像{date: '2016-09-28T00:00:00.000Z'}
这样的东西。
你的阻止应该是这样的:
do {
var useDate = new String(fromDate.toISOString());
var dateObject = {};
dateObject.date = useDate;
output.push(dateObject);
fromDate.setDate(fromDate.getDate() + 1);
i++
}
这样,output
将是一个对象数组:
[
{
"date": "2016-09-28T00:00:00.000Z"
},
{
"date": "2016-09-29T00:00:00.000Z"
},
{
"date": "2016-09-30T00:00:00.000Z"
}
]