按颜色谷歌日历移动事件

问题描述 投票:0回答:1

我正在尝试使用谷歌应用程序脚本自动化谷歌日历流程。每周,我都会用默认颜色(孔雀)记录我要做的事件。当我意识到这些事件时,我把它们标记为绿色。我正在尝试创建一个脚本,在每周结束时查找所有蓝色事件并将它们转移到下周同一天同一时间。

我已经进行了多次尝试,但我无法选择带有颜色的事件。我尝试在标题中找到关键字,并且我的代码有效。但不带颜色。这是我的代码:

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 blueCode = 16; 

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var eventColor = event.getColor();
    
    if (eventColor == blueCode) {
      var newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      var newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  }
}

我使用了这个 github 页面:text

我不知道是否使用颜色代码、其名称或十六进制代码。因为这段代码也不起作用:

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 blueCode= "#46d6db"; 

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var eventColor = event.getColor();
    
    if (eventColor == blueCode) {
      var newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      var newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  }
}

此代码不适用于此十六进制:#039BE5

提前感谢您的回答。

google-apps-script google-calendar-api
1个回答
1
投票

好的。我解决了这个问题。当您使用默认颜色放置事件时,它被视为空。以下是将所有事件从默认颜色移至下周的代码示例。

function moveBlueEvents() {
  const now = new Date();
  const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);
  const peacockColorId = ""; // Default event coulour (here Peacock)

  const events = CalendarApp.getDefaultCalendar().getEvents(now, nextWeek);
  
  events.forEach(event => {
    const eventColorId = event.getColor();

    if (eventColorId === peacockColorId) {
      const newStartDate = new Date(event.getStartTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      const newEndDate = new Date(event.getEndTime().getTime() + 7 * 24 * 60 * 60 * 1000);
      event.setTime(newStartDate, newEndDate);
    }
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.