【问题标题】:How to create time based triggers in Multiple Google Sheets如何在多个 Google 表格中创建基于时间的触发器
【发布时间】:2021-02-23 05:29:12
【问题描述】:

我想使用 Google Apps 脚本在多个 Google 表格上安装基于时间的触发器,但不知道该怎么做。我知道这些可以通过 UI 添加,但我希望找到一种编程方式来做到这一点。我试过这段代码:

function initializeTrigger(sheetID){ 
  var sheet = SpreadsheetApp.openById(sheetID);
  ScriptApp.newTrigger('myLibrary.myFunction')
  .forSpreadsheet(sheet)
  .timeBased()
  .atHour(9)
  .everyDays(1)
  .create();
}

function installMultipleTriggers(){
  var sheetList = [sheetID1, sheetID2, sheetID3];

  for (var i = 0; i < sheetList.length; i++)
  {
    initializeTrigger(sheetList[i]);
  }
}

但是当我运行它时,我收到错误:

TypeError:在对象 SpreadsheetTriggerBuilder 中找不到函数 timeBased。

我猜这是有道理的,因为根据documentation,SpreadsheetTriggerBuilder 类没有名为 timeBased() 的方法...有谁知道如何将基于时间的触发器添加到多个 Google 表格?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    基于时间的触发器独立于基于工作表的触发器。基于工作表的触发器响应工作表上发生的事件,例如,如果您编辑单元格。

    我会在您的代码 sn-p 中消除 forSpreadsheet 调用,这应该可以解决您的问题。

    【讨论】:

    • 这将使代码运行,但触发器仅适用于当前电子表格。我想将触发器应用于多个电子表格。
    • @PatrickDoyle 您需要将要修改的工作表收集到一个数组中,然后循环遍历它们,并在执行过程中逐步添加基于时间的触发器。你应该看看数组和 For 循环。
    【解决方案2】:

    以编程方式创建电子表格触发器

    所以我想这里的问题是您希望将触发器绑定到电子表格。我认为唯一的方法是从电子表格包含的项目中创建触发器,您可以使用 ClockTriggerBuilder。

    【讨论】:

    • 此代码将在我当前的电子表格上创建一个触发器,但我正在尝试在多个电子表格上安装一个触发器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多