Google表单非工作时段提交自动发送邮件回复方案及脚本报错解决问询
我来帮你搞定这个Google Forms非工作时段自动发通知的需求,结合你的场景,我整理了完整的脚本实现方案和常见报错的排查解决办法:
一、完整脚本实现方案
这个方案基于Google Forms关联的Google Sheets来实现——因为表单提交的数据会自动同步到Sheets中,我们可以通过Sheets的触发器监听新提交,并判断时间发送邮件。
1. 脚本代码
打开表单关联的Google Sheets,点击「扩展程序」→「Apps Script」,粘贴以下代码:
function sendOffHoursNotification(e) { // 设置时区,替换成你实际使用的时区(比如"Europe/London"或"Asia/Shanghai") const timeZone = "Asia/Shanghai"; // 获取表单提交的时间(e.values[0]是默认的提交时间列) const submitTime = new Date(e.values[0]); // 提取提交时间的小时数(24小时制) const submitHour = parseInt(Utilities.formatDate(submitTime, timeZone, "HH")); // 判断是否处于非工作时段:00:00-05:00 const isOffHours = submitHour >= 0 && submitHour < 5; if (isOffHours) { // 获取请求者邮箱(假设表单的邮箱字段是第2列,根据你的实际表单调整索引) const requesterEmail = e.values[1]; // 邮件内容配置 const subject = "工单提交通知:非工作时段处理说明"; const body = `您好!\n\n您的工单已于${Utilities.formatDate(submitTime, timeZone, "yyyy-MM-dd HH:mm")}提交,当前处于我们的非工作时段(每日00:00-05:00),我们会在工作时段开始后第一时间处理您的请求。\n\n感谢您的理解!`; // 发送邮件 MailApp.sendEmail({ to: requesterEmail, subject: subject, body: body }); } }
2. 设置触发器
脚本写完后,需要配置一个「表单提交」触发器来触发函数:
- 在Apps Script界面点击左侧的时钟图标(触发器)
- 点击「添加触发器」
- 配置选项:
- 选择要运行的函数:
sendOffHoursNotification - 事件源:「表单提交」
- 事件类型:「来自表单的提交」
- 时区:和脚本里设置的
timeZone保持一致
- 选择要运行的函数:
- 点击保存,按照提示完成权限授权(需要允许脚本访问邮件和表单数据)
二、常见报错及解决方法
1. 权限报错("Authorization is required to perform that action")
- 原因:脚本没有获得足够的权限发送邮件或访问表单数据
- 解决方法:首次运行脚本时,点击「运行」按钮,按提示完成授权流程;如果遇到Google安全提示,选择「高级」→「转到XX脚本(不安全)」继续授权
2. 时间判断错误(邮件未触发/错误触发)
- 原因:时区设置不一致,导致提交时间的小时判断出错
- 解决方法:确保脚本里的
timeZone变量和触发器设置的时区完全一致,同时检查Sheets中提交时间列的时区格式是否正确
3. 邮箱获取失败(提示"Invalid email")
- 原因:脚本里的邮箱列索引错误,或者表单未正确收集邮箱信息
- 解决方法:在Sheets里查看提交数据的列顺序,确认邮箱所在列的索引(
e.values从0开始计数,第一列是提交时间)
4. 触发器未触发(新提交后无邮件)
- 原因:触发器配置错误或被禁用
- 解决方法:
- 检查触发器的事件源是否选择了「表单提交」
- 确认触发器绑定的函数名称和脚本里的完全一致
- 查看触发器状态是否为「已启用」
内容的提问来源于stack exchange,提问作者chris_m




