2017-04-03 5 views
0

Je veux déterminer par programme si le déclencheur est créé avec succès, mais même un déclencheur échoué fait ressortir un identifiant unique et semble être créé.Déterminez si le déclencheur est créé avec succès ou non à l'aide de 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 

Mais en réalité, le déclencheur est créé

+0

'' at() '' est utilisé une seule fois. Et un déclencheur ne peut pas être créé pour le passé. Bien qu'il ait une identification, le déclencheur a été fait. Donc, le déclencheur a déjà été supprimé. Si vous modifiez '' dt'' à '' var dt = new Date (2018,03,03,20,10) '', vous pouvez voir le déclencheur sur la liste de déclenchement actuelle. – Tanaike

+0

Oh non, je connais le fait ci-dessus. Ma question est de savoir comment je vais déterminer si le déclencheur est valide ou non par programmation. Il ne lancera pas d'erreur, il supprime seulement le déclencheur. –

+0

Je suis désolé le malentendu. Dans votre exemple de script, les informations d'un déclencheur créé pour le passé peuvent être récupérées. Mais en réalité, un tel déclencheur ne fonctionne pas. Donc, après que le script de création du trigger passé soit terminé, quand '' getProjectTriggers() '' est utilisé, la longueur est zéro. À ce moment-là, j'ai pensé que le temps pourrait être nécessaire pour enlever le déclencheur passé. J'ai donc mis '' Utilities.sleep (1000) '' entre '' var ret = '' et '' var triggers = '' de votre script. Après l'avoir mis, les informations de déclenchement de l'heure passée ont disparu. Cela mènera-t-il à la solution? – Tanaike

Répondre

1

Votre meilleure option est de vérifier si la date entrée est passée? Et seulement définir le déclencheur s'il n'a pas passé.

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() 
} 

Espérons que ça aide!

+0

Merci Jack. Bien –