4

時限トリガーをテストしようとしているテストスクリプトがあります。プログラムでトリガーを作成および削除できる必要があります。これは、ドキュメントによると可能です。ただし、次のことを行う必要がある場合、トリガーは削除されません。

function myFunction() {
  var db = ScriptDb.getMyDb();
  var user = Session.getActiveUser().getEmail();
  var triggerID = ScriptApp.newTrigger("timed").timeBased().everyMinutes(1).create().getUniqueId();

  var ob = {
    id: user,
    count: 1,
    trigger: triggerID
  }

  db.save(ob);
}

function timed(){
  var db = ScriptDb.getMyDb();
  var user = Session.getActiveUser().getEmail();
  var ob = db.query({id: user}).next();
  var count = ob.count;
  var triggerID = ob.trigger;

  if (count > 4){
    deleteTrigger(triggerID);
    db.remove(ob);

  } else {
    Logger.log(count + " " + Utilities.formatDate(new Date(), "GMT", "HH:mm:ss") + " TriggerID=" + triggerID);
    ob.count = count+1;
    db.save(ob);
  }
}

function deleteTrigger(triggerID){
  var allTriggers = ScriptApp.getProjectTriggers();

  for(var i=0; i < allTriggers.length; i++){
    if(allTriggers[i].getUniqueId() = triggerID){
      ScriptApp.deleteTrigger(allTriggers[i]);
      break;
    }
  }
}
4

1 に答える 1

5

等しいかどうかをテストするには、次の行の==代わりに必要です。=

if (allTriggers[i].getUniqueId() = triggerID) {
于 2013-03-13T00:48:06.750 に答える