Google Sheet Script定时触发器未触发:工作日每小时执行需求
问题分析与修复
你的触发器未触发的核心原因是错误使用了onWeekDay()方法:该方法仅支持传入单个星期几枚举值,你传入多个参数会导致触发器创建失败。
另外,代码内部函数与外部函数同名(均为createTrigger),虽语法合法但易造成混淆;数组里的05是八进制写法,虽等价于十进制5,但写成5更清晰,可避免歧义。
修复后的代码
function createTriggers(){ // 重命名内部函数,避免与外部函数同名 const buildTrigger = ([hour, minute]) => ScriptApp.newTrigger("myFunction") .timeBased() .atHour(hour) .nearMinute(minute) .everyWeeks(1) // 使用复数形式的onWeekDays(),支持传入多个星期几参数 .onWeekDays( ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY, ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY, ScriptApp.WeekDay.FRIDAY ) .create(); // 将05改为5,消除八进制写法歧义 [[7,5],[8,5],[9,5],[10,5],[11,5],[12,5],[13,5],[14,5],[15,5],[16,5],[17,5],[18,5]].forEach(buildTrigger); } function myFunction(){ // 这里编写你要执行的代码 }
注意事项
- 必须手动执行一次
createTriggers()函数,才能完成所有触发器的创建。执行后可在编辑器的「编辑」→「当前项目的触发器」中查看是否创建成功。 - 若之前创建过无效触发器,建议先删除旧触发器,再执行新的
createTriggers()函数,避免重复或无效触发。
内容的提问来源于stack exchange,提问作者user3392296
相关产品推荐
相关产品推荐

