可以运行 Google Sheets 脚本“每天的确切时间”吗?

use*_*314 3 javascript google-apps-script

目前,我将“我的触发器”与时间驱动->日计时器->上午 7 点到上午 8 点 (GMT+08:00) 一起使用,结果,我的脚本在上午 7:11:45 运行。还早呢。

我的问题是,是否可以在每天上午 7:55:00 等确切时间触发 Google 表格?

在此输入图像描述

soM*_*rio 8

解释:

您需要以下四个功能:

  • setTrigger():该函数负责删除之前的触发器并创建新的触发器function_Triggered您唯一需要做的就是在早上 7 点之前(例如早上 6 点至 7 点)为该功能设置每日触发器。以下函数只是帮助程序,您不需要(手动)执行它们。

  • scheduledTrigger(hours,minutes):此函数接受时间(小时和分钟),并负责创建计划触发器function_Triggered

  • deleteTriggers():此函数删除 的所有当前触发器(在本例中只有一个)function_Triggered

  • function_Triggered():此函数包含您想要每天早上 7:55 执行的代码。


解决方案:

function setTrigger() {

deleteTriggers();  
scheduledTrigger(7,55);
}

function scheduledTrigger(hours,minutes){
  
var today_D = new Date();
var year = today_D.getFullYear();
var month = today_D.getMonth();
var day = today_D.getDate();
  
pars = [year,month,day,hours,minutes];
  
var scheduled_D = new Date(...pars);
var hours_remain=Math.abs(scheduled_D - today_D) / 36e5;
ScriptApp.newTrigger("function_Triggered")
.timeBased()
.after(hours_remain * 60 *60 * 1000)
.create()
}

function deleteTriggers() {
  
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
  if (   triggers[i].getHandlerFunction() == "function_Triggered") {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}
}

function function_Triggered() {
 // your function code here
}
Run Code Online (Sandbox Code Playgroud)

请启用v8 运行时,否则解决方案将无法工作。

有关的:

每天在 8:00、12:30、17:00 运行 Gmail Google Apps 脚本