【问题标题】:Unable to open modal dialog in onOpen function of a spreadsheet copy using Apps Script无法使用 Apps 脚本在电子表格副本的 onOpen 函数中打开模式对话框
【发布时间】:2018-08-01 09:18:38
【问题描述】:

我有一个模板电子表格,它应该在打开时执行一些代码。
此代码的一部分是打开一个模式对话框,要求用户在脚本运行时等待。
我已经在模板上手动创建了 onOpen 触发器。
打开此模板电子表格时,一切正常。

但是,当我复制电子表格并打开它时,onOpen 代码会执行,但模式对话框从未显示。
在第一个电子表格上手动安装的触发器不会添加到副本中。如果我在副本上手动创建触发器,一切都会按预期工作。

如何创建初始电子表格的副本以在打开时显示模式对话框,而无需在每个副本上手动创建触发器(或手动执行任何其他操作)?


编辑1:这是一个简单的例子。

function onOpen(event) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu("Custom menu")
    .addItem('Show modal dialog', '_pleaseWait')
    .addToUi();

  _pleaseWait();
}

function _pleaseWait(){
  var htmlOutput = HtmlService
    .createHtmlOutput("Processing...")
    .setWidth(100)
    .setHeight(100);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Hello');
}

如果没有手动创建 onOpen 触发器,则会添加菜单,但模式对话框永远不会自动显示。但是,它会通过单击添加的菜单项来显示。
将制作模板电子表格的副本,并且不能在每个副本上添加手动触发器。

【问题讨论】:

  • 我想过这个解决方案,但我需要在第一次打开副本之前自动安装触发器
  • 在安装时以编程方式安装触发器。您必须安装触发器才能获得授权范围来执行您想做的其他事情。
  • 您的代码似乎有问题。但是,除非我们有code or information that can reproduce the problem,否则我们无能为力。否则,我们只是在盲目猜测。
  • @ChrisW 我添加了一个小例子。

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


【解决方案1】:

我遇到了类似的问题。当通过自定义菜单调用时,它将完美运行;但是在我将它添加到函数 onOpen(){} 的那一刻,它就不起作用了,此外,它之后也不会执行任何东西。我什至尝试将代码直接添加到 onOpen 函数中(反对调用另一个函数)。这似乎是 ui.showModalDialog(); 明确的问题。它可以与 ui.alert 一起按预期工作。我最终添加了一个项目触发器来运行我的函数,它可以正常工作。以下代码不起作用:

function onOpen(){    
    SpreadsheetApp.getUi().createMenu('Feedback').addItem('Submit Feedback','sendFeedback').addToUi();
    startUpNotification()
}
function startUpNotification(){
    var ui = SpreadsheetApp.getUi();
    var message = HtmlService.createHtmlOutputFromFile('reminders').setWidth(800).setHeight(250);
    var result = ui.showModalDialog(message,' ');
}

但是,一旦我通过脚本编辑器窗口中的“编辑”菜单将 startUpNotification() 添加到项目触发器列表中,它就按预期工作了。

【讨论】:

  • 感谢分享。我遇到了类似的问题,它也对我有用。
【解决方案2】:

非常感谢您的支持。 我发现使用 _pleaseWait() 的结构和启动通知效果很好。只需在启动中包含 onOpen() 即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2014-01-09
    • 1970-01-01
    相关资源
    最近更新 更多