Javascript 是否可以在没有活动电子表格的情况下,每天使用时间驱动触发器运行函数?

Javascript 是否可以在没有活动电子表格的情况下,每天使用时间驱动触发器运行函数?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个功能,可以在被调用时更新单元格并发送电子邮件。我希望每天都运行它,而不必打开电子表格(使用getActiveSpreadsheet()方法) 所以我尝试使用服务器端方法openById()调用它。但当电子表格未打开时,该函数不会启动 有没有办法在电子表格关闭的情况下运行它 代码如下: function updateNote() { var ss = SpreadsheetApp.openById("MySpreadsheetID"); //do things };` function

我有一个功能,可以在被调用时更新单元格并发送电子邮件。我希望每天都运行它,而不必打开电子表格(使用
getActiveSpreadsheet()
方法)

所以我尝试使用服务器端方法
openById()
调用它。但当电子表格未打开时,该函数不会启动

有没有办法在电子表格关闭的情况下运行它

代码如下:

function updateNote() {
var ss = SpreadsheetApp.openById("MySpreadsheetID");
//do things
};`

function createTimeDrivenTriggers() {
// Trigger fonction everyday at 10.35am   
  ScriptApp.newTrigger('updateNote')
      .timeBased()
      .atHour(10)
      .nearMinute(35)
      .everyDays(1)
      .create();
};
答复: 您可以创建一个可安装的触发器,每天运行,而无需打开电子表格

细节: 使用基于时间的可安装触发器,您可以让您的功能每天运行,但按照以下步骤:

时间可能会稍微随机化—例如,如果您创建一个重复出现的上午9点触发器,则应用程序脚本会选择上午9点到上午10点之间的时间,然后每天保持该时间一致,以便在触发器再次触发之前经过24小时

如果这对您来说不是问题,那么您可以在项目的应用程序脚本编辑器中执行此操作-按照路径
Edit>Current project's triggers
,该路径将在新选项卡中打开项目的触发器页面

在左下角,单击
+添加触发器
按钮,调出
添加触发器
模式-使用以下属性:

  • 选择要运行的功能:
    updateNote()
  • 选择应运行的部署:
    Head
  • 选择事件源:
    时间驱动
  • 选择基于时间的触发器类型:
    daytimer
  • 选择一天中的时间:
    10am到11am
如果恰好在10:35跑步对你很重要:

您可以执行与上述相同的步骤,但属性略有不同:

  • 选择要运行的功能:
    createTimeDrivenTriggers()
  • 选择应运行的部署:
    Head
  • 选择事件源:
    时间驱动
  • 选择基于时间的触发器类型:
    daytimer
  • 选择一天中的时间:
    9am和10am
这样,您就可以创建基于时间的触发器,每天10:35运行,始终在触发器需要触发之前运行

参考资料:

在脚本编辑器>视图>执行>中显示它失败的原因。它没有启动。所以我看不到任何执行我知道你是根据代码创建触发器的,但是触发器是否显示在触发器菜单中?确保已清除顶部的所有过滤器。另外,查看是否在“编辑>当前项目触发器”中有触发器这是可能的!查看活动触发器列表。我通常更喜欢直接在G套件开发者中心创建触发器。。。