Zapier中的Javascript返回多个值以发布到Airtable数据库

时间:2016-09-29 16:40:03

标签: javascript zapier airtable

我正在尝试在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};

后续步骤确实可以看到输出变量 - 但它被视为一个值,如上所述。

有没有人有任何想法?

2 个答案:

答案 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"
  }
]