Google Apps Script工作日办公时段每15分钟运行报错求助
解决方法
错误根源很明确:你创建的是每15分钟运行的时间驱动触发器,这种触发器不会向Record函数传递包含day-of-week、hour的事件参数e,直接访问e['day-of-week']自然会报「无法读取undefined属性」的错误。
不需要依赖触发器传参,直接在Record函数里主动获取当前时间来判断是否符合办公时段即可,修正后的代码如下:
function Record() { const now = new Date(); const dayOfWeek = now.getDay(); // 0=周日, 1=周一, 2=周二, ..., 6=周六 const hour = now.getHours(); // 判断:周一到周五(1-5),且小时在8点到17点之间(原代码是>8且<17,即9点到16点,可按需调整) if (dayOfWeek >= 1 && dayOfWeek <=5 && hour >=8 && hour <17) { SpreadsheetApp.getUi().alert("Alert message"); } } // 只创建一个对应Record函数的触发器 function createTimeBasedTrigger() { const existingTriggers = ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() === "Record"); if (existingTriggers.length === 0) { ScriptApp.newTrigger("Record").timeBased().everyMinutes(15).create(); } }
补充说明
- 时区校验:确保脚本的时区和你预期的办公时段时区一致,可在脚本编辑器右上角的「设置」(齿轮图标)里查看和调整。
- 时段微调:如果需要包含17点整,把
hour <17改成hour <=17;若要从8点整开始执行,保留hour >=8即可,原代码的hour>8是从9点开始生效。
内容的提问来源于stack exchange,提问作者Mee
相关产品推荐
相关产品推荐

