2012-05-09 2 views
3

일부 스프레드 시트를 업데이트하려면 Google 스프레드 시트에서 많은 트리거를 설정해야합니다. 프로그래밍 방식으로 트리거를 만들 때 가끔씩 오류가 발생합니다.

음, 여기를 만들라고 내 함수의, 내가 (... 일괄 처리 등) 작업의 기능에 프로그래밍 방식으로 다른 사람이 필요 설정을 수동으로 하나의 트리거를 설정 한 고통스러운 작업을 피하려면 트리거

나는 그 때문에 시도의 catch 블록에 트리거의 작품을 넣어했습니다
function createTriggers(sheet, hour){ 
    var nbTrigger = sheet.getLastColumn() * sheet.getLastRow()/1100 + 1 ; 
    var buffHour = new Date().getHours(); 
    var min = new Date().getMinutes()+10; 
    if(min >=60){ 
    min = min % 60; 
    buffHour++; 
    if(buffHour>=24){ 
     buffHour = buffHour % 24; 
    } 
    } 
    //Browser.msgBox(buffHour+"h"+min); 
    var ok = false; 
    var cpt = 0; 
    do { 
    try { 
    ScriptApp.newTrigger("triggered").timeBased().atHour(new Date().getHours()).nearMinute(Math.abs(1)).everyDays(1).create(); 
     ok = true; 
    } catch(e) { 
     Logger.log(e); 
     Utilities.sleep(1000); 
     cpt++; 
    } 
    }while(!ok && cpt<10); 

    if(cpt>10){ 
    throw "Was unable to create a trigger..."; 
    } 

    for(var i = 0; i<nbTrigger; i++){ 
    ok = false; 
    cpt = 0; 
    do { 
     try { 
     var trigger = ScriptApp.newTrigger("update").timeBased().atHour(buffHour).nearMinute(Math.abs(min)).everyDays(1).create(); 
     ok = true; 
     } catch(e) { 
     Logger.log(e); 
     Utilities.sleep(1000); 
     cpt++; 
     } 
    } while(!ok && cpt<10); 

    if(cpt>10){ 
     throw "Was unable to create a trigger..."; 
    } 

    Utilities.sleep(10000); 
    min +=7; 
    if(min >= 60){ 
     buffHour++; 
     min = 0; 
     if(buffHour == 24){ 
     buffHour = 0; 
     } 
    } 
    } 
} 

:

Wed May 09 13:36:41 PDT 2012 INFO: Exception: Invalid value -2 for field MINUTE, should be between [Range:0, 59] 
Wed May 09 13:36:42 PDT 2012 INFO: Exception: Invalid value -8 for field MINUTE, should be between [Range:0, 59] 
Wed May 09 13:36:43 PDT 2012 INFO: Exception: Invalid value -7 for field MINUTE, should be between [Range:0, 59] 
Wed May 09 13:36:44 PDT 2012 INFO: Exception: Invalid value -7 for field MINUTE, should be between [Range:0, 59] 

이 오는가? 왜 매번 그런 일이 일어나지 않습니까 ?? 이것을 피하려면 어떻게해야합니까?

감사합니다.

답변

0

이 문제를 제기 해 주셔서 감사합니다. ClockTriggerBuilder.nearMinute() 메소드의 버그입니다. 나는 당신을 위해 이슈 트래커에서 제기했습니다 : http://code.google.com/p/google-apps-script-issues/issues/detail?id=1320. 별표를 작성하면 진행 상태가 업데이트됩니다.

그동안 해결 방법으로 nearMinute() 메소드에 분 값을 8에서 52 사이의 값으로 전달하십시오.

관련 문제