Javascript 在Google脚本中,当由时间驱动触发器执行时,为什么函数参数的值没有定义?
我在Google Apps脚本中的时间驱动功能是:Javascript 在Google脚本中,当由时间驱动触发器执行时,为什么函数参数的值没有定义?,javascript,function,google-apps-script,Javascript,Function,Google Apps Script,我在Google Apps脚本中的时间驱动功能是: 函数addTopRow(d){ 如果(d==“未定义”){//从时间触发器运行时 var dT=(新日期().setHours(0,0,0,0)); d=新日期(dT); } 否则{ d=新日期(d+“T00:00:00-08:00”); } var行=[]; var sheet_db=//在此处定义工作簿工作表 世界其他地区:推动(d); 活页_db.getRange(“A3”).设置值([行]); } //在需要时,在没有任何触发器的情况下
函数addTopRow(d){
如果(d==“未定义”){//从时间触发器运行时
var dT=(新日期().setHours(0,0,0,0));
d=新日期(dT);
}
否则{
d=新日期(d+“T00:00:00-08:00”);
}
var行=[];
var sheet_db=//在此处定义工作簿工作表
世界其他地区:推动(d);
活页_db.getRange(“A3”).设置值([行]);
}
//在需要时,在没有任何触发器的情况下运行上述相同功能(&W)
功能测试开始日期(“2019-11-10”);
使用案例1.每天凌晨1点左右准时触发<代码>d将是未定义的;因此,手动将
d
设置为今天的日期。
2.如果工作表中的任何其他函数以d
作为日期字符串调用。这次将定义D
预期行为在案例1中,d未定义,因此函数使用今天的日期。
在案例2中,定义/传递了d,所以函数应该使用该日期 发生了什么事
案例2正在按预期工作。 在案例1中,日期始终被视为UNIX历元(0)&在添加时区时-8:00将其始终设置为1969年12月31日。预期输出是今天的日期 问题
为什么“d”在时间驱动触发器中没有定义?
是否有任何文档/参考列出了时间驱动时传递给函数的所有参数 更新
我在API上找到了该对象的链接:用我的发现部分回答了我自己的问题,但也将等待其他答案 在使用了许多Logger.log()和执行摘要后,我发现当此函数由时间驱动触发器触发时,
d
将作为具有以下值的对象出现:
{
"authMode": {},
"week-of-year": 47,
"day-of-week": 7,
"month": 11,
"hour": 1,
"year": 2019,
"timezone": "UTC",
"day-of-month": 24,
"triggerUid": "2594419",
...)
显然,…
部分意味着Logger.log()决定截断更多的键和值
因此,我更新了以下if
条件,以检查typeofstring
,而不是undefined:
//上一行:
如果(d==“未定义”){//从时间触发器运行时
//改为:
if(typeof d!=“string”){//从时间触发器运行时
&现在开始工作了