我是否可以使用基于时间的触发器来运行可在Google Apps脚本中触发另一个基于时间的触发器的功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否可以使用基于时间的触发器来运行可在Google Apps脚本中触发另一个基于时间的触发器的功能?相关的知识,希望对你有一定的参考价值。

我已经尝试过这种方式,但是当第二个触发器关闭时,由于未知原因它被禁用了。

//the first time based trigger that is supposed to run once a day

function startTimeTrigger() 

  ScriptApp.newTrigger('runAuto')
           .timeBased()
           .atHour(14)
           .nearMinute(25)
           .everyDays(1)
           .create();

;

function runAuto() 

  // resets the loop counter if it's not 0
  refreshUserProps();

  // a function that creates the second time based trigger 
  createTrigger();



function createTrigger() 

  // Trigger every 1 minute
  ScriptApp.newTrigger('addStats')
      .timeBased()
      .everyMinutes(1)
      .create();

答案

是,仅当您删除使用相同名称的旧函数时:

  function startTimeTrigger() 

      ScriptApp.newTrigger('runAuto')
          .timeBased()
          .atHour(14)
          .nearMinute(25)
          .everyDays(1)
          .create();

  ;

  function runAuto() 

      // resets the loop counter if it's not 0
      refreshUserProps();

      // a function that creates the second time based trigger 
      createTrigger();

  

  function createTrigger() 
      deleteTrigger('addStats')
      // Trigger every 1 minute
      ScriptApp.newTrigger('addStats')
          .timeBased()
          .everyMinutes(1)
          .create();
  

  function deleteTrigger(key) 
      var allTriggers = ScriptApp.getProjectTriggers();

      for (var i = 0; i < allTriggers.length; i++) 
          if (allTriggers[i].getHandlerFunction() === key) 
              ScriptApp.deleteTrigger(allTriggers[i]);
          
      

  
另一答案

您可能会考虑用来检查同一功能是否还有其他触发器的功能。

function isTrigger(funcName)
  var r=false;
  if(funcName)
    var allTriggers=ScriptApp.getProjectTriggers();
    for (let i=0;i<allTriggers.length;i++)
      if(funcName==allTriggers[i].getHandlerFunction())
        r=true;
        break;
      
    
  
  return r;

以上是关于我是否可以使用基于时间的触发器来运行可在Google Apps脚本中触发另一个基于时间的触发器的功能?的主要内容,如果未能解决你的问题,请参考以下文章

是否有可在 Java/Android 中使用的 PostMessage 等效项?

是否可以使用 Apps 脚本运行 Google 表格插件?

测试 Google Sheet 插件触发器

有什么方法可以根据文件的存在而不是具体时间来触发cron任务的运行?

有什么方法可以根据文件的存在而不是具体时间来触发cron任务的运行?

Kubernetes 通过基于时间的触发器扩展 pod