0

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

后续步骤确实看到了输出变量——但正如我上面所说的,它被视为一个值。

有没有人有任何想法?

4

2 回答 2

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);
于 2016-09-29T21:19:21.257 回答
0

看起来您正在返回一个对象,而不是一个对象数组:

return{output};

此外,您的 do/while 语句正在创建一个字符串数组,而不是对象。在您的 do 块中,您应该构造一个简单的对象并将推送到输出数组,而不是将useDate字符串推送到数组。output

因此,不要在'2016-09-28T00:00:00.000Z'每次循环运行时都推送,而应该推送类似{date: '2016-09-28T00:00:00.000Z'}.

您的 do 块应如下所示:

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"
  }
]
于 2016-09-29T17:05:15.153 回答