Google Apps Script按颜色移动谷歌日历事件问题求助
解决Google Apps Script按日历事件颜色筛选失效的问题
核心原因
CalendarApp的event.getColor()方法返回的是预定义的字符串类型颜色常量,而非数字ID或十六进制颜色值。你之前尝试的数字16、十六进制#46d6db都和返回值不匹配,导致筛选失效。
第一步:确认目标颜色对应的常量字符串
先运行以下脚本,打印近期事件的颜色值,找到你用的"孔雀蓝"对应的字符串(通常是"CYAN"或"TEAL"):
function checkEventColors() { var calendar = CalendarApp.getDefaultCalendar(); var events = calendar.getEvents(new Date(), new Date(Date.now() + 7*24*60*60*1000)); events.forEach(event => { console.log(`标题: ${event.getTitle()}, 颜色常量: ${event.getColor()}`); }); }
运行后查看脚本编辑器的日志(点击「查看」→「日志」),找到目标蓝色事件对应的颜色常量字符串。
第二步:修正后的移动事件脚本
将找到的颜色常量替换到targetColor变量中,即可实现按颜色筛选并移动事件:
function moveBlueEvents() { var calendar = CalendarApp.getDefaultCalendar(); var now = new Date(); var nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); var events = calendar.getEvents(now, nextWeek); // 替换为你查到的孔雀蓝对应的颜色常量 var targetColor = "CYAN"; for (var i = 0; i < events.length; i++) { var event = events[i]; var eventColor = event.getColor(); if (eventColor === targetColor) { // 计算下周同一时间 var newStart = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000); var newEnd = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000); event.setTime(newStart, newEnd); } } }
常用CalendarApp颜色常量参考
"NONE"(默认无颜色)"PALE_BLUE"、"BLUE"、"TEAL"、"CYAN"(不同深浅蓝色系)"PALE_GREEN"、"GREEN"(绿色系)"YELLOW"、"ORANGE"(黄橙系)"PALE_RED"、"RED"(红色系)"PURPLE"、"PINK"(紫粉系)"GREY"(灰色)
内容的提问来源于stack exchange,提问作者Framboise
相关产品推荐
相关产品推荐

