2014-05-12 3 views
1

안녕하세요, 캘린더 일정에 대한 공개 설정을 변경하는 스크립트가 있습니다. 스크립트가 최대 실행 시간에 도달했습니다. 내가 이것을 막을 수있는 방법이 있습니까? 또는 스크립트가 이미 비공개로 설정된 경우에도 스크립트는 모든 이벤트를 처리합니다. 현재 날짜 만 검사하도록 스크립트를 수정할 수 있습니까?Google Apps Script의 시간 초과 "최대 실행 시간"

function ChangeCalendarEvents() { 


     //Room1 
    var mycal = '[email protected]'; 
    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 = '[email protected]'; 
    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); 
     } 
    } 

답변

0

다음 코드 수정판을 사용해보십시오.

그것은 다음과 같은 변경 사항이 있습니다
1. MYCAL는 기본적으로 (
2. 시작/종료 경계가 이제 변수 (쉽게 코드를 수정/삭제 일정을 추가, 쉽게 읽을 수 있습니다) 배열입니다, 시작 = 오늘, 오늘 = 오늘 + 일주일)

매우 빠르게 실행되어야합니다. 그래도 문제가 지속되면 "for (var i = 0 ...")에 디버그 지점을 설정하고 이벤트 배열에 몇 개의 요소가 있는지 알려주십시오.

function ChangeCalendarEvents() { 
    var mycal  = ['[email protected]', //Room 1 
        '[email protected]'], //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); 
      } 
     }; 
    }