以编程方式删除定时触发器的麻烦 [英] Trouble programmatically deleting timed trigger

查看:100
本文介绍了以编程方式删除定时触发器的麻烦的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个测试脚本,我试图测试定时触发器。我需要能够以编程方式创建和删除触发器 - 根据文档可能这是可能的。然而,当我需要它的时候,我的触发器不会被删除:
$ b

I have a test script where I'm trying to test out timed triggers. I need to be able to create and delete triggers programmatically - which is possible according to the documentation. However, my trigger will not delete when I need it to:

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;
    }
  }
}


推荐答案

为了测试相等性,您只需 == 而不是 = 在以下行中:

To test for equality, you just need == instead of = in the following line:

if (allTriggers[i].getUniqueId() = triggerID) {

这篇关于以编程方式删除定时触发器的麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆