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

如何在Google Apps Script中识别Calendar工作地点事件以修复脚本报错?

解决Google日历工作地点事件无法修改颜色的问题

问题原因

Google CalendarApp.getEvents接口现在会返回工作地点事件这类特殊系统事件,这类事件不支持修改颜色,导致原有脚本调用setColor时出错。

两种判断并跳过工作地点事件的方法

方法1:通过事件标题判断(简单快速)

工作地点事件默认标题为“工作地点”(英文环境为"Work location"),可直接通过标题过滤:

function myFunction() {
  var today = new Date();
  today.setHours(0,0,0,0);

  var nextWeek = new Date(today);
  nextWeek.setDate(nextWeek.getDate() + 7);

  CalendarApp.getEvents(today, nextWeek).forEach(event => {
    // 跳过工作地点事件(根据你的日历语言调整标题文本)
    if (event.getTitle().trim() === '工作地点') return;
    
    if(event.isRecurringEvent()) {
      Logger.log(event.getTitle());
      Logger.log(event.getDescription());
      Logger.log(event.getStartTime());
      Logger.log(event.getEndTime());
      
      event.setColor(CalendarApp.EventColor.ORANGE);
    }
  });
}

注意:如果用户手动修改了工作地点事件的标题,这种方法会失效。

方法2:通过高级Calendar API判断(更可靠)

工作地点事件的eventType字段固定为work_location,需启用高级Calendar服务来获取该字段:

  1. 在脚本编辑器中,点击「扩展」→「Apps Script 编辑器」(已在编辑器中可直接下一步)
  2. 点击「服务」→「添加服务」,找到「Calendar API」并启用
  3. 使用以下代码:
function myFunction() {
  var today = new Date();
  today.setHours(0,0,0,0);
  var nextWeek = new Date(today);
  nextWeek.setDate(nextWeek.getDate() + 7);
  var defaultCalendarId = CalendarApp.getDefaultCalendar().getId();
  
  // 调用高级Calendar API获取事件,包含eventType字段
  var eventsResponse = Calendar.Events.list(defaultCalendarId, {
    timeMin: today.toISOString(),
    timeMax: nextWeek.toISOString(),
    singleEvents: false // 保留重复事件的主事件
  });
  
  if (eventsResponse.items) {
    eventsResponse.items.forEach(apiEvent => {
      // 跳过工作地点事件
      if (apiEvent.eventType === 'work_location') return;
      
      // 判断是否为重复事件
      if (apiEvent.recurrence) {
        // 通过事件ID获取CalendarApp对象,执行颜色修改
        var calendarEvent = CalendarApp.getEventById(apiEvent.id);
        if (calendarEvent) {
          calendarEvent.setColor(CalendarApp.EventColor.ORANGE);
          Logger.log(`已修改重复事件颜色: ${apiEvent.summary}`);
        }
      }
    });
  }
}

优点:不受标题修改影响,能准确识别工作地点事件。

内容的提问来源于stack exchange,提问作者IMTheNachoMan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:43:31