我创建了一个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
而不是今天。
为什么它与触发器的行为不同?检查执行记录,我没有看到任何错误消息。
有没有更好的方法通过触发器获取今天的日期?
答案 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);
}
}