Google Apps Script日历事件无法发送嘉宾邮件及空行报错求助
解决Google日历自动创建事件的两个问题:通知未发送与空行报错
问题1:空行触发报错的解决方案
原代码会遍历C5:G11的所有行,包括空行,空值传入createEvent方法会直接引发错误。只需在遍历逻辑中添加空行判断,跳过未填写的行即可:
- 检查每行的核心必填字段(会议标题、开始时间、结束时间、嘉宾邮箱),任意一个为空则跳过当前行。
问题2:嘉宾未收到通知的解决方案
原代码在事件创建后调用addGuest,默认不会触发Google日历的标准邀请邮件。正确做法是在创建事件时,直接将嘉宾邮箱纳入配置项并开启邀请发送开关:
- 在
createEvent的配置对象中添加guests和sendInvites: true,创建事件时会自动发送标准邀请邮件给嘉宾。
修改后的完整代码
function createevent() { const tutorCalendar = CalendarApp.getCalendarById("922....@group.calendar.google.com"); const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Student 1'); const schedule = ss.getRange("C5:G11").getValues(); schedule.forEach(function(entry) { // 解构提取字段并过滤空行 const [title, startTime, endTime, guestEmail, location] = entry; if (!title || !startTime || !endTime || !guestEmail) { return; } // 创建事件时直接配置嘉宾并发送邀请 tutorCalendar.createEvent( title, startTime, endTime, { location: location, guests: guestEmail, sendInvites: true } ).addEmailReminder(2880); }); }
关键修改说明
- 空行过滤:通过解构赋值提取每行字段,判断核心必填项是否为空,为空则直接跳过,避免无效执行引发报错。
- 邀请发送:将嘉宾邮箱放入
createEvent的guests配置项,同时设置sendInvites: true,确保触发Google日历的标准邀请邮件流程。 - 代码可读性优化:使用
const替代不必要的let/var,变量作用域更清晰。
内容的提问来源于stack exchange,提问作者charlotte
相关产品推荐
相关产品推荐

