简体   繁体   English

Google Apps脚本的“最长执行时间”超时

[英]Timeout on Google Apps Script “maximum execution time”

Hi, I have a script that changes the visibility on calendar events. 嗨,我有一个脚本,可以更改日历事件的可见性。 The script reaches the maximum execution time. 脚本达到了最大执行时间。 Is there any way I can prevent this? 有什么办法可以防止这种情况? Or, even better, right now the script goes through each and every event, even if they are already set to private. 或者,甚至更好的是,现在脚本会遍历每个事件,即使它们已经设置为私有。 Could I modify the script so that it only checks the current day? 我可以修改脚本,以便仅检查当天吗?

function ChangeCalendarEvents() {


      //Room1
    var mycal = 'comp.com_38353134313283637333434@resource.calendar.google.com';
    var cal = CalendarApp.getCalendarById(mycal);
      var events = cal.getEvents(new Date('January 1, 2014 00:00:00 CST'), new Date('December 31, 2014 23:59:59 CST'), {visibility: 'default' || 'public'});
      for (var i=0;i<events.length;i++) {
        events[i].setVisibility(CalendarApp.Visibility.PRIVATE);
      }


      //Room2
      var mycal2 = 'comp.com_319373936383633831343039@resource.calendar.google.com';
    var cal2 = CalendarApp.getCalendarById(mycal2);
      var events = cal2.getEvents(new Date('January 1, 2014 00:00:00 CST'), new Date('December 31, 2014 23:59:59 CST'), {visibility: 'default' || 'public'});
      for (var i=0;i<events.length;i++) {
        events[i].setVisibility(CalendarApp.Visibility.PRIVATE);
      }
    }

You can try the following modified version of your code. 您可以尝试下面的代码修改版本。

It has the following changes: 它具有以下更改:
1. mycal is now an array (makes code easier to read, easier to add / remove calendars to modify) 1. mycal现在是一个数组(使代码更易于阅读,更易于添加/删除要修改的日历)
2. start / end boundaries are now variables (by default, start = today, end = today + 1 week) 2.开始/结束边界现在是变量(默认情况下,开始=今天,结束=今天+ 1周)

This should run pretty quickly. 这应该运行得很快。 If you are still having problems, set a debug point at "for (var i=0..." and tell me how many elements are in the events array. 如果仍然有问题,请将调试点设置为“ for(var i = 0 ...”),然后告诉我事件数组中有多少个元素。

function ChangeCalendarEvents() {
  var mycal      = ['comp.com_38353134313283637333434@resource.calendar.google.com',   //Room 1 
                    'comp.com_319373936383633831343039@resource.calendar.google.com'], //Room 2
      start      = new Date(),
      end        = new Date(start.getYear(),start.getMonth(),start.getDate()+7);
  for (var index = 0; index < mycal.length;index++) {
       var cal   = CalendarApp.getCalendarById(mycal[index]),
          events = cal.getEvents(start, end, {visibility: 'default' || 'public'});
      for (var i=0;i<events.length;i++) {
            events[i].setVisibility(CalendarApp.Visibility.PRIVATE);
          }
      };
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM