【发布时间】:2018-04-15 15:13:12
【问题描述】:
我创建了一个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,我会得到我期望的确切结果。所以,我设置了这个触发器来自动化这个过程:
触发器运行时,日期值为12/31/1969,而不是今天。
为什么它与触发器的行为不同?检查执行记录,我没有看到任何错误消息。
有没有更好的方法通过触发器获取今天的日期?
【问题讨论】:
-
当
_getSunday(d)运行时,d已经是一个日期。您不需要从已经是日期对象的东西中创建新的日期对象。如果函数_getSunday(d)被多个地方调用,并且有时d不是日期,那么您需要测试d是否为对象。if (typeof d !== 'object') {d = new Date(d)}
标签: date google-apps-script triggers