簡體   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