Google Apps Script获取日历参会人邮箱并按参会人给事件标色
问题根因
- 原有代码中使用遍历事件的索引变量
j来读取参会人列表guestlist的元素,索引不匹配,只能获取到下标与当前事件序号一致的单个参会人 - 未对单个事件的全部参会人做遍历,无法匹配所有参会人身份
修复后可用代码
var today = new Date(); var nextweek = new Date(); nextweek.setDate(nextweek.getDate() + 7); Logger.log(today + " " + nextweek); var calendars = CalendarApp.getAllOwnedCalendars(); Logger.log("found number of calendars: " + calendars.length); for (var i=0; i<calendars.length; i++) { var calendar = calendars[i]; var events = calendar.getEvents(today, nextweek); for (var j=0; j<events.length; j++) { var e = events[j]; var title = e.getTitle(); var guestlist = e.getGuestList(); // 遍历当前事件所有参会人 for (var k = 0; k < guestlist.length; k++) { var guestEmail = guestlist[k].getEmail(); if (guestEmail == "example0@gmail.com") { e.setColor(CalendarApp.EventColor.CYAN); } if (guestEmail == "example1@gmail.com") { e.setColor(CalendarApp.EventColor.YELLOW); } if (guestEmail == 'example2@gmail.com') { e.setColor(CalendarApp.EventColor.GREEN); } } } }
使用说明
- 代码新增了参会人遍历逻辑,会逐个校验当前事件的所有参会人邮箱,匹配到规则就执行颜色标记
- 若单个事件同时存在多个符合规则的参会人,后执行的颜色规则会覆盖之前的设置,你可以根据需求调整三个if判断的先后顺序,把优先级更高的颜色规则放在靠后的位置即可
内容的提问来源于stack exchange,提问作者Bebbo
相关产品推荐
相关产品推荐

