![](/img/trans.png)
[英]Google Apps Script Calendar Service: Get only the first events of all recurring (all day) events
[英]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.