【问题标题】:onOpen() function running fine when triggered manually within script window but not via onOpen trigger在脚本窗口中手动触发但不是通过 onOpen 触发器触发时,onOpen() 函数运行良好
【发布时间】:2019-01-18 16:21:21
【问题描述】:

我创建了一个用于工作的 Google 脚本(我不想在这里分享),并且 工作得非常好 与一个 onOpen() 触发器。

由于我在个人电子表格上处理该脚本以进行测试,因此我最终将其移至真正的 Google 表格,它打算从一开始就在其上运行,而 onOpen() 函数仍然可以通过调用正常工作“运行函数”甚至“调试函数”,触发器没有被触发,我没有得到任何可能对我有帮助的日志或调试信息。

我多次删除并重新创建了触发器,因为我发现这是针对该问题的已知解决方法,但它并没有改变任何东西。然后当我去检查“当前触发器”时,我发现它甚至没有触发一次,而且我不知道是什么导致了这个问题......

虽然我不想放弃整个脚本,因为它无论如何都可以工作,但我正在为我的触发函数提供代码,即使它自上次在我的测试电子表格上成功运行以来并没有改变:

function onOpen()
{
  var aSheet = SpreadsheetApp.getActiveSheet();
    var emailRow = 2;
    var emailColumn = 3;
    for(; !aSheet.getRange(emailRow, emailColumn).isBlank(); emailRow++)
    {
      aSheet.getRange(emailRow, 19).setValue(matchNPandCIO(emailColumn, emailRow));
    }
}

我唯一可以添加且可能不相关的内容是,我现在尝试运行脚本的电子表格今天发生了所有权更改,而我现在是它的所有者。我的想法和尝试的东西都用完了......

是的,我还确保为脚本提供了所需的授权(在创建触发器后完成)。

【问题讨论】:

  • 不是很有帮助,但根据我的经验,所有权更改有时需要一段时间才能在 Google Apps 脚本领域生效。
  • 是的,我有点希望这不会是问题,因为现在我再次尝试,onOpen() 被正确触发了......哈哈!

标签: google-apps-script google-sheets triggers


【解决方案1】:

onOpen 这样的简单触发器匿名运行,因此如果matchNPandCIO 调用需要授权才能运行的方法,它将失败。

另一种方法是使用可安装的触发器。

相关

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多