在多个日历上查找空闲时间

时间:2019-01-14 21:23:57

标签: google-apps-script google-calendar-api

我正在编写一个脚本,该脚本具有给定的开始/结束日期时间参数,可以在两个不同的日历上找到第一个相互可用的时隙,以便预定会议。

到目前为止,我的脚本运行非常缓慢。我猜这是因为我以30分钟为增量循环浏览两个日历,并每次都运行CalendarApp.getCalendarById(email).getEvents来查看是否有30分钟的空闲时间。

我曾考虑过使用.getEvents()一次运行批处理操作以最大程度地减少读取次数,但我被困在这里,因为结果是一个具有繁忙时隙的数组,而我试图找到空闲时隙。 / p>

是否有更好的方法来使我的脚本运行更快?

1 个答案:

答案 0 :(得分:0)

查找开放时间段

最近我做了类似的事情,我要做的就是创建和对象类似的东西:

var timeSlotsObj={"8:00-8:30":0,"8:30-9:00":0,"9:00-9:30":0,"9:30-10:00":0,...."7:30-8:00":0,slotA["8:00-8:30","8:30-9:00",...]}

然后,我浏览了每个日历,并在给定的日期 上增加了每个事件的时隙值,该值与每个日历中的那个时隙重叠。在那之后,我拿了slotA数组并遍历它,寻找其中仍然有0的任何timeSlot。

循环如下:

for(var i=0;i<timeSlotObj.slotA.length;i++){
  if(timeSlotsObj[timeSlotsObj.slotA[i]]==0){
    //You just found an empty time slot and it's value is timeSlotsObj.slotA[i]
  }

任何值仍然为0的对象属性是给定日历在任何给定日期的开放时隙。

在我的情况下,我实际上使用了日期对象作为对象属性或键,但是想法是相同的。任何没有事件的插槽都是空闲插槽。