![](/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.