【发布时间】: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