如何修改Google Apps Script获取所有自有日历每日日程并邮件发送?
汇总所有自有日历当日日程并发送邮件的修改方案
完全可行,修改后的代码能自动拉取你所有自有日历的当日事件并汇总发送,具体代码如下:
function sendAllCalendarsAgenda() { // 获取所有自有日历 var ownedCalendars = CalendarApp.getOwnedCalendars(); var allEvents = []; var mailto = 'myEmailAddress@gmail.com'; var today = new Date(); var tz = Session.getScriptTimeZone(); // 遍历每个日历,收集当日事件 for (var calIndex = 0; calIndex < ownedCalendars.length; calIndex++) { var cal = ownedCalendars[calIndex]; var events = cal.getEventsForDay(today); // 给每个事件附加所属日历名称,方便区分 for (var eventIndex = 0; eventIndex < events.length; eventIndex++) { allEvents.push({ title: events[eventIndex].getTitle(), startTime: events[eventIndex].getStartTime(), endTime: events[eventIndex].getEndTime(), calendarName: cal.getName() }); } } // 如果有事件,生成邮件内容并发送 if (allEvents.length > 0) { // 按开始时间排序,保证日程顺序正确 allEvents.sort(function(a, b) { return a.startTime.getTime() - b.startTime.getTime(); }); var body = 'Google Calendar - 当日日程汇总' + '\n\n'; for (var i = 0; i < allEvents.length; i++) { body += '【' + allEvents[i].calendarName + '】' + '\n'; body += Utilities.formatDate(allEvents[i].startTime, tz, 'MM-dd HH:mm') + ' ~ '; body += Utilities.formatDate(allEvents[i].endTime, tz, 'HH:mm') + ' : '; body += allEvents[i].title + '\n\n'; } MailApp.sendEmail(mailto, 'Google Calendar - 当日日程汇总', body); } }
关键修改说明:
- 用
CalendarApp.getOwnedCalendars()替代原代码的单个日历ID获取,一次性拿到所有你拥有的日历(包括个人日历、节假日日历、任务日历等) - 新增数组统一收集所有日历的事件,避免逐个日历处理导致的内容混乱
- 增加事件排序逻辑,确保邮件里的日程按时间先后排列
- 给每个事件加上所属日历名称,方便区分不同来源的日程
- 修正原代码里的拼写错误(
Calender改为Calendar)和换行符错误(原代码的'nn'改为标准的'\n\n')
使用提示:
- 把代码里的
myEmailAddress@gmail.com替换成你的收件邮箱 - 保存代码后,在Google Apps Script编辑器中设置时间驱动触发器,可让脚本每天自动在指定时间发送日程邮件
内容的提问来源于stack exchange,提问作者Nikola Spasovski
相关产品推荐
相关产品推荐

