繁体   English   中英

Google Apps脚本(日历)-比较同一天是否有2个事件

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

我不懂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();
      }
    }
  }
}

如果将日期进行比较,则将Date school_class.getStartTime() vacation.getAllDayStartDate()与Date school_class.getStartTime()进行比较可以正常工作:

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

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

getAllDayStartDate()

获取此全天日历事件开始的日期。 (如果这不是一整天的事件,则此方法将引发异常。)返回的Date将表示该事件在脚本所在时区中开始的一天的开始时的午夜。 要改用日历的时区,请调用getStartTime()。

另一个包含日期和时间:

getStartTime()

获取此日历事件开始的日期和时间。 对于非全天事件,这将是定义事件开始的即时时间。 对于仅存储开始日期(不存储日期和时间)的全天事件,该时间将是日历所在时区中事件开始的第一天的午夜。 这样可以有意义地比较所有类型事件的开始时间; 但是,它不一定会保留原始的一年中的未修改日期。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM