2016-09-29 56 views
0

我想在Zapier中编写一些JavaScript,它将读取两个日期,然后返回这些日期之间的所有日期的数组,然后可以使用它们在Airtable(数据库)中创建多个日期记录。从Zapier帮助它说,如果你返回一个对象数组,那么下面的步骤将被处理。JavaScript中Zapier返回多个值发布到Airtable数据库

我已经设法获得返回数据的代码,但是它不能正确,因为如果我尝试创建数据库记录,只创建一个 - 所有日期都在(所以它只会在输出时才起作用到文本字段 - 不是日期)。这里是我的代码的尝试:

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

它看起来像你返回一个对象,而不是对象的数组:

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" 
    } 
] 
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);