You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:53:27