无法使用Apps脚本

时间:2018-02-21 17:22:17

标签: google-apps-script google-sheets

我有一个模板电子表格,应该在打开时执行一些代码 此代码的一部分是打开一个模式对话框,要求用户在脚本运行时等待 我在模板上手动创建了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触发器,则会添加菜单,但模式对话框永远不会自动显示。但是,通过单击添加的菜单项显示它 将制作模板电子表格的副本,并且不能在每个副本上添加手动触发器。

2 个答案:

答案 0 :(得分:0)

我有类似的问题。通过自定义菜单调用它会完美地工作;但是,我将它添加到函数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()添加到项目触发器列表中,它就会按预期工作。

答案 1 :(得分:-1)

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