2017-04-03 8 views
0

を使用して作成されているかどうかを決定します。は、私はトリガーが正常に作成されますが、でも、失敗したトリガが固有のIDを引き出し、作成しているように見えるかどうかを判断programicallyしたいトリガーが正常かどうかGAS

//this will show 0 
var triggers = ScriptApp.getProjectTriggers(); 
showAlert(triggers.length); //define showAlert 

var dt = new Date(2015,03,03,20,10) // create past date or feb 31 
//Month index starts from 0 i.e. Jan =0,Feb=1... So on 
var ret = ScriptApp.newTrigger('myFunction').timeBased().at(dt).create() 

showAlert(ret.getUniqueId()); //will display ID for sure 

//this will show 1 
var triggers = ScriptApp.getProjectTriggers(); 
showAlert(triggers.length); //define showAlert 

しかし、実際にトリガが

+0

'' at() ''は一度だけ使用されます。また、過去にトリガーを作成することはできません。それはIDを持っていますが、トリガーが行われていました。トリガーは既に削除されています。 '' dt''を '' var dt = new Date(2018,03,03,20,10) ''に変更すると、現在のトリガリストでトリガを見ることができます。 – Tanaike

+0

ああ、私は上記の事実を知っています。私の質問は、どのようにトリガが有効かどうかをプログラマチックに判断するかどうかです。それはエラーを投げることはありません、それはトリガーを削除します。 –

+0

誤解をおかけして申し訳ありません。サンプルスクリプトでは、過去に作成されたトリガーの情報を取得できます。しかし、実際にはこのようなトリガは機能しません。したがって、過去のトリガを作成するためのスクリプトが終了した後、 '' getProjectTriggers() ''が使われると、長さはゼロになります。現時点では、過去のトリガーを取り除くためには時間が必要かもしれないと考えました。だから私はあなたのスクリプトの '' var ret = ''と '' var triggers = ''の間に '' Utilities.sleep(1000) ''を置きます。それを置いた後、過去の時間のトリガー情報は消えた。これが解決策につながるだろうか? – Tanaike

答えて

1

あなたの最良の選択肢で作成されていませんが入力された日付が経過しているかどうかを確認するのですか?それが通過していない場合にのみトリガを設定します。

var dt = new Date(2015,03,03,20,10) // create past date or feb 31 
//Month index starts from 0 i.e. Jan =0,Feb=1... So on 
if(dt > new Date()){ //new Date() gives current date 
var ret = ScriptApp.newTrigger('myFunction').timeBased().at(dt).create() 
} 

希望に役立ちます。

+0

ありがとうジャック。良い –

関連する問題