4

我为 Google 电子表格创建了一个脚本,该脚本只是添加了一个新的菜单项,如此处所述的自定义菜单项在电子表格中。然后我将此脚本部署为 Web 应用程序,我希望所有安装该应用程序的用户都能够看到新的菜单项。我被困在这一点上。

据我了解,当您将脚本部署为 Web 应用程序时,onOpen 函数失去了它的意义。因此,在 doGet 中,我为 onOpen 事件创建了自定义触发器,将 myOnOpen 处理程序附加到它并在 myOnOpen 中添加了一个菜单项,但该项目没有显示出来。

这是我的代码:

function doGet() {
    var newSheet = SpreadsheetApp.create("new sheet");
    var newId = newSheet.getId();
    ScriptProperties.setProperty('newId', newId); 

    ScriptApp.newTrigger("myOnOpen")
        .forSpreadsheet(newId)
        .onOpen()
        .create();
};

function myOnOpen() {
    var newId = ScriptProperties.getProperty('newId');
    var sheet = SpreadsheetApp.openById(newId);

    var entries = [ { name : "Show bingo", functionName : "Bingo" } ];
    sheet.addMenu("My Menu", entries);
};

function Bingo() {
    Browser.msgBox("Bingo!");
};

因此,当安装该应用程序的用户打开“新工作表”电子表格时,他看不到“我的菜单”。我在这里做错了什么?为什么菜单项不显示?归根结底,我想创建一个 Web 应用程序,它通过额外的菜单和对话框扩展了 Google 电子表格 UI。

欢迎任何建议。谢谢!

4

1 回答 1

0

当您将脚本部署为 Web 应用程序时,Web 应用程序的用户将只能看到您从 doGet 函数“返回”的内容。您可以使用UiAppHtmlService创建内容并返回此内容以在浏览器中呈现。您的新菜单项附加到电子表格,因此它们只能在用户转到电子表格本身时显示(激活 onOpen 触发器等)。

于 2012-12-17T19:49:35.837 回答