Google Apps脚本(日历)-比较如果两个事件是在同一天

Google Apps Script (Calendar) - Compare if 2 events are in the same day

本文关键字:两个 在同一天 事件 比较 脚本 Apps 日历 Google 如果      更新时间:2023-09-26

我不知道JavaScript(我知道一点Java),但我想写一个简单的脚本,删除我的学校类事件时,有一个假期事件,但它根本不起作用…有什么问题吗?

function vacations()                                                 
{                                                    
  var school_calendar = CalendarApp.getCalendarsByName("Timetable")[0].getEvents(new Date("September 1, 2016"),new Date("June 20, 2017"));
  var vacations = CalendarApp.getCalendarsByName("Vacations")[0].getEvents(new Date("September 1, 2016"),new Date("June 20, 2017"));
  for (var i = 0; i < vacations.length; i++)
  {
    var vacation = vacations[i];
    for (var j = 0; j < school_calendar.length; j++) 
    {
      var school_class = school_calendar[j];
      if(vacation.getAllDayStartDate() == school_class.getStartTime())
      {
        school_class.deleteEvent();
      }
    }
  }
}

比较日期vacation.getAllDayStartDate()和日期school_class.getStartTime()可以工作,如果你比较它们:

vacation.getAllDayStartDate().getTime() === school_class.getStartTime().getTime()

但是,其中一个包含时间设置为午夜的日期:

getAllDayStartDate ()

获取此全天日历事件开始的日期。(如果这是不是一个全天的事件,那么这个方法将抛出异常。)的返回的日期将代表一天开始时的午夜事件在脚本的时区中开始。要使用请调用getStartTime()。

另一个包含日期和时间:

getStartTime ()

获取此日历事件开始的日期和时间。为非全天事件,这将是在时间的瞬间,其中事件被定义为启动。对于全天事件,它只存储一个开始日期(不是日期和时间),这将是午夜时分事件在日历时间中开始的那一天的开始区。这允许对所有类型的开始时间进行有意义的比较的事件;然而,它不一定会保留原来的day-of-year修改的。

对于全天事件,getAllDayStartDate()应该几乎总是优先于此方法调用

确保比较正确的格式,并使用调试器或Logger来查看代码中的内容。