修改Google Apps Script:将日程事件添加至已有Google Calendar
修改Google Apps Script以将活动添加到现有日历
要把学生活动添加到你预先创建好的日历里,只需要修改脚本中获取日历的逻辑,替换掉原来新建日历的代码就行,具体操作如下:
第一步:获取目标日历的ID
打开Google日历,找到你预先创建的学生日程日历,进入「设置和共享」页面,在「日历ID」字段复制完整的ID(格式通常类似xxx@group.calendar.google.com)。
第二步:修改脚本代码
把原脚本中的setUpCalendar_函数替换为以下内容,核心修改是替换创建日历的逻辑为获取现有日历,同时移除不必要的新日历ID存储代码:
/** * 将电子表格中的学生活动添加到指定的现有Google日历中,并将事件ID写回表格供后续使用。 * @param {Array<string[]>} values 电子表格范围的单元格值。 * @param {Range} range 包含活动数据的电子表格范围。 */ function setUpCalendar_(values, range) { // 替换成你复制的目标日历ID const TARGET_CALENDAR_ID = '你的日历ID'; // 获取预先创建的现有日历,不再新建 let cal = CalendarApp.getCalendarById(TARGET_CALENDAR_ID); // 从第1行开始循环,跳过表头行 for (let i = 1; i < values.length; i++) { let session = values[i]; let title = session[0]; let start = joinDateAndTime_(session[1], session[3]); let end = joinDateAndTime_(session[1], session[4]); let options = {location: session[5], sendInvites: true}; let event = cal.createEvent(title, start, end, options) .setGuestsCanSeeGuests(false); session[6] = event.getId(); } range.setValues(values); // 移除原脚本中保存新日历ID的代码,因为使用的是预先创建的日历 } /** * 将分开的日期和时间单元格合并为一个Date对象。 * * @param {Date} date 用于提取日期的Date对象。 * @param {Date} time 用于提取时间的Date对象。 * @return {Date} 表示合并后日期和时间的Date对象。 */ function joinDateAndTime_(date, time) { date = new Date(date); date.setHours(time.getHours()); date.setMinutes(time.getMinutes()); return date; }
修改说明
- 新增
TARGET_CALENDAR_ID常量,填入你复制的目标日历ID,确保脚本定位到正确的日历 - 用
CalendarApp.getCalendarById()替换原有的createCalendar(),直接调用已存在的日历,不再创建新日历 - 删除原脚本中存储新日历ID的代码,因为不需要再记录新建日历的信息
- 事件创建、写入ID到表格的核心逻辑保持不变,确保原有功能正常运行
注意事项
首次运行修改后的脚本时,可能会出现权限授权提示,需要允许脚本访问你的Google日历,授权成功后才能正常添加活动事件。
内容的提问来源于stack exchange,提问作者prest10
相关产品推荐
相关产品推荐

