我有一个模板电子表格,这是应该执行一些代码打开。
这段代码的一部分是打开一个模式对话框,要求用户在脚本运行时等待。
我已经在模板上手动创建了onOpen触发器。
打开此模板电子表格时,一切工作正常。
但是,当我复制电子表格并打开它时,onOpen代码会执行,但模式对话框不会显示。
手动安装在第一个电子表格上的触发器不会添加到副本中。如果我在副本上手动创建触发器,一切都会按预期工作。
如何创建初始电子表格的副本,以便在打开时显示模式对话框,而不必在每个副本上手动创建触发器(或执行任何其他操作)?
EDIT 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触发器,则会添加菜单,但模式对话框不会自动显示。但是,它是通过单击添加的菜单项来显示的。
将制作模板电子表格的副本,并且不能在每个副本上添加手动触发器。
发布于 2018-06-02 03:13:48
我也遇到过类似的问题。当通过自定义菜单调用它时,它可以很好地工作;但是当我将它添加到函数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()添加到项目触发器列表中,它就可以正常工作了。
发布于 2019-04-18 21:36:18
非常感谢您的支持。我发现使用_pleaseWait()的结构和启动通知可以很好地工作。只需在启动过程中包含onOpen(),它就会正常工作。
https://stackoverflow.com/questions/48911904
复制相似问题