为什么我的某些 Google Apps 脚本的 "limit exceeded" 使用基于时间的触发器?

Why is my "limit exceeded" for some of my Google Apps scripts that are using time-based triggers?

我似乎 运行在使用 Google Apps 脚本时我的 G Suite 帐户遇到了某种未指定的限制,但我不确定该限制是多少 and/or 我应该如何调整我的工作流程。

我有一个 G Suite 企业帐户。

我的 "G Suite Developer Hub".

中大约有 45 个相对简单的项目

每个项目只有一个具有单一功能的小脚本,使用基于时间的触发器设置为 运行 每天 2:00 上午和 3:00 上午。

每个项目的存在只是为了将文件从一个文件夹移动到另一个文件夹,每天一次。每个项目都存在一对不同的文件夹。

这是每个项目中一个小文件的模板,名为 Code.gs

var source_folder = DriveApp.getFolderById("xxxxxxxxsourceFolderIDxxxxxxxx")

var dest_folder = DriveApp.getFolderById("xxxxxxxxdestinationFolderIDxxxxxxxx")

function moveFiles() {

  var files = source_folder.getFiles();

  while (files.hasNext()) {

    var file = files.next();
    dest_folder.addFile(file);
    source_folder.removeFile(file);

  }
}

大多数触发器似乎工作正常,但最近我收到了其中两个触发器失败的通知:

Start | Function | Error Message | Trigger | End
6/5/19 2:43 AM | moveFiles | Limit Exceeded: Drive. (line 13, file "Code") | time-based | 6/5/19 2:43 AM

第 13 行只是:source_folder.removeFile(file);

为什么会发生这种情况,我如何才能确保自己不受此限制?

很可能您的 45 个触发器在一段时间内执行了太多操作。有很多选择,

  1. 与其同时将所有触发器设置为 运行,不如以某种方式分配它们,比如在晚上 11 点将 9 个触发器设置为 运行,在上午 12 点将 9 个触发器设置为 运行,等等。
  2. 与其使用 1 个帐户设置所有触发器,不如使用多个帐户。
  3. 而不是让 45 个脚本创建一个 "master" 脚本。也许您应该在每次 folder/file 迭代时添加一个 Utilities.sleep(毫秒)。这是某种微调,具体取决于要移动的文件数量以及您设计主脚本的方式。