首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法使用应用程序脚本在电子表格副本的onOpen函数中打开模式对话框

无法使用应用程序脚本在电子表格副本的onOpen函数中打开模式对话框
EN

Stack Overflow用户
提问于 2018-02-22 01:22:17
回答 2查看 1.1K关注 0票数 4

我有一个模板电子表格,这是应该执行一些代码打开。

这段代码的一部分是打开一个模式对话框,要求用户在脚本运行时等待。

我已经在模板上手动创建了onOpen触发器。

打开此模板电子表格时,一切工作正常。

但是,当我复制电子表格并打开它时,onOpen代码会执行,但模式对话框不会显示。

手动安装在第一个电子表格上的触发器不会添加到副本中。如果我在副本上手动创建触发器,一切都会按预期工作。

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

EDIT 1:这里是一个简单的例子。

代码语言:javascript
复制
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触发器,则会添加菜单,但模式对话框不会自动显示。但是,它是通过单击添加的菜单项来显示的。

将制作模板电子表格的副本,并且不能在每个副本上添加手动触发器。

EN

回答 2

Stack Overflow用户

发布于 2018-06-02 03:13:48

我也遇到过类似的问题。当通过自定义菜单调用它时,它可以很好地工作;但是当我将它添加到函数onOpen(){}中时,它就不会工作,而且,它不会执行它之后的任何东西。我甚至尝试将代码直接添加到onOpen函数中(而不是调用另一个函数)。这显然是ui.showModalDialog()的一个问题;对于ui.alert,它会像预期的那样工作。我最终添加了一个项目触发器来运行我的函数,它工作起来没有任何问题。以下代码将不起作用:

代码语言:javascript
复制
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()添加到项目触发器列表中,它就可以正常工作了。

票数 3
EN

Stack Overflow用户

发布于 2019-04-18 21:36:18

非常感谢您的支持。我发现使用_pleaseWait()的结构和启动通知可以很好地工作。只需在启动过程中包含onOpen(),它就会正常工作。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48911904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档