【问题标题】:getUserTriggers() Returns Empty Array Even Though Trigger Exists即使触发器存在,getUserTriggers() 也会返回空数组
【发布时间】:2020-09-03 06:13:41
【问题描述】:

我有一个奇怪的问题。我试图了解此触发功能在 Gapps 中的实际工作原理: 获取用户触发器() https://developers.google.com/apps-script/reference/script/script-app#getusertriggersspreadsheet

我将这段非常简单的代码用作电子表格中的脚本:

function testing(){
  var ss = SpreadsheetApp.openById('some id');
  var triggers = ScriptApp.getUserTriggers(ss);
  // Log the event type for the first trigger in the array.
  Logger.log(triggers[0].getHandlerFunction())
}

同时,我已手动安排此功能每小时运行一次,我在https://script.google.com/u/0/home/triggers 下的“我的触发器”列表中看到它。一切都从 1 个帐户完成(脚本创建、脚本调度)

问题是,当我运行该函数时,它会返回数组中的 0 个项目,我希望数组中有 1 个项目 - 我手动创建的触发器和我在 https://script.google.com/u/0/home/triggers 中看到的触发器文件。

所以问题是 - 为什么我得到 0 个项目而不是 1 个项目?

我得到的只是 "TypeError: Cannot read property 'getHandlerFunction' of undefined (line 5, file "Code")"

DZ

【问题讨论】:

  • 试试var ss = SpreadsheetApp.getActiveSpreadsheet();
  • 已经试过了,没区别...
  • getProjectTriggers() 呢?
  • getProjectTriggers() 工作正常。

标签: google-apps-script


【解决方案1】:

documentation所写,

获取给定电子表格中此用户拥有的所有可安装触发器,仅限此脚本或插件

它只返回电子表格的触发器,即基于Spreadsheet Trigger Builder的触发器:如editopen

对于其他触发器,请改用getProjectTriggers()

【讨论】:

  • 抱歉,但我仍然无法理解措辞以及您如何推断 getUserTriggers() 仅返回编辑、打开等,当文档说明您在上面粘贴的内容时“......在给定的电子表格中,仅适用于此脚本或附加组件...” - 根据文档中的描述,我希望我仍会获得 1 项。
  • @DanielZrust 我同意措辞不清楚。基本上“在给定的电子表格中”是关键。时间触发器不在电子表格中,尽管它触发的函数可能在电子表格的绑定脚本中。将此与edit 可安装触发器进行对比,其中editin spreadsheet
  • 我不知道,这似乎是google给出的一个奇怪的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
相关资源
最近更新 更多