【问题标题】:Google Apps Script - Custom Triggers - Just Month + Day - No YearGoogle Apps 脚本 - 自定义触发器 - 仅月 + 日 - 无年
【发布时间】:2021-07-02 13:45:07
【问题描述】:

简而言之,我想在特定月的第一天触发代码。因此,例如,我想在 1 月 1 日运行 X-script,而不是 2 月 1 日、3 月 1 日等。根据我的测试,似乎 atDate 函数需要 year 变量,我希望触发器每年触发1 月 1 日,而不仅仅是 x 年。

这是我一直在使用的定时触发功能的版本。

function createTrigger() {
  ScriptApp.newTrigger("moveNumbersDecember")
  .timeBased()
  .atDate(xxxx, 1, 1)
  .create();
}

还有其他我可以使用的函数,或者 atDate() 的解决方法吗?我的其他尝试是使用 today() 将工作表上的 A1 单元格设置为时钟,然后尝试创建一个 if 函数,如果 A1 = 1 月 1 日,然后运行 ​​X 脚本。但我对编码很陌生,还不能让它工作。

非常感谢任何想法/帮助。

【问题讨论】:

    标签: google-apps-script triggers


    【解决方案1】:

    GAS 没有年度触发器,但请尝试此解决方法。创建一个每月运行的触发器。这每月运行一次,但仅在 1 月 1 日通过检查当前日期的月份时调用您想要执行的函数。

    function createMonthlyTrigger() {
      // every month, the trigger created will run checkIfJan1()
      ScriptApp.newTrigger("checkIfJan1")
               .timeBased()
               .onMonthDay(1)
               .atHour(0)
               .create();
    }
    
    function checkIfJan1() {
      var date = new Date();
      // if jan 1, then run moveNumbersDecember()
      if (date.getMonth() === 0) {
        moveNumbersDecember();
      }  
    }
    

    【讨论】:

    • 谢谢,非常清晰和优秀的帖子!我理解你所做的一切。我的问题是我不知道将这些触发器函数放置在与我定义 moveNumbersDecemeber() 函数的位置相关的位置。我做了一张新的纸来试验,这就是我一直在努力的工作。 link 我基本上已经移动了 moveNumbersJuly() 函数并且无法使其正常运行。任何见解都非常受欢迎!
    • 我不确定不包括 atHour 时的行为。您能否将其包括在内并确保它与您的测试时间一致?问题是什么?你的触发器成功触发了吗? moveNumbersJuly 没有被调用吗?或者它被执行但什么也没做?检查您的执行选项卡并进行调试。首先看看,我没有看到你的脚本有任何问题。我仍然不清楚,一旦你在这里回答我的问题,你就可以澄清它。
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多