我正在编写一个脚本,该脚本具有给定的开始/结束日期时间参数,可以在两个不同的日历上找到第一个相互可用的时隙,以便预定会议。
到目前为止,我的脚本运行非常缓慢。我猜这是因为我以30分钟为增量循环浏览两个日历,并每次都运行CalendarApp.getCalendarById(email).getEvents来查看是否有30分钟的空闲时间。
我曾考虑过使用.getEvents()一次运行批处理操作以最大程度地减少读取次数,但我被困在这里,因为结果是一个具有繁忙时隙的数组,而我试图找到空闲时隙。 / p>
是否有更好的方法来使我的脚本运行更快?
答案 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的对象属性是给定日历在任何给定日期的开放时隙。
在我的情况下,我实际上使用了日期对象作为对象属性或键,但是想法是相同的。任何没有事件的插槽都是空闲插槽。