Apps脚本触发器无法获取当前日期

时间:2018-04-15 15:13:13

标签: date google-apps-script triggers

我创建了一个Apps Script来编译数据并将结果保存到新的Google Sheet

代码使用new Date()获取当前日期,并将其用于查询并命名它创建的新工作表。

以下是代码的相关部分:

function exportPayroll(setDate){
  var date = new Date();
  var newWeek = Utilities.formatDate(_getSunday(date),"GMT", "MM/dd/yyyy");
  for (var company in companies){
    getPayroll(companies[company],newWeek);
  }
}
function _getSunday(d) {
  d = new Date(d);
  var day = d.getDay(),
      diff = d.getDate() - day + (day == 0 ? -7:0); // adjust when day is sunday
  return new Date(d.setDate(diff));
}

如果我手动运行exportPayroll,我会得到我期望的确切结果。因此,我设置此触发器以自动执行该过程:

enter image description here

当触发器运行时,日期值为12/31/1969而不是今天。

为什么它与触发器的行为不同?检查执行记录,我没有看到任何错误消息。

有没有更好的方法通过触发器获取今天的日期?

1 个答案:

答案 0 :(得分:2)

因为你不想得到上一个星期日的日期。尝试以这种方式运行。

function getLastSunday() {
  var d = new Date();
  var day = d.getDay();
  var diff = d.getDate() - day + (day == 0 ? -7:0); // adjust when day is sunday
  return new Date(d.setDate(diff));
}

function exportPayroll(){
  var newWeek = Utilities.formatDate(getLastSunday(),"GMT", "MM/dd/yyyy");
  for (var company in companies){
    getPayroll(companies[company],newWeek);
  }
}