2012-05-09 14 views
3

Googleスプレッドシートに多くのトリガーを設定して、一部のシートを更新する必要があります。プログラムでトリガーを作成すると失敗することがある

痛みを伴う作業を避けるために、私は(...バッチ処理など)タスクの機能で、プログラム的に他の人が必要な設定を手動1トリガを設定している

さて、ここではそれらを作成するために呼び出され、私の機能があります私はそのためのtry 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です。

関連する問題