google-apps-script - 使用 Google Web 应用程序扩展 Google 电子表格 UI

标签 google-apps-script google-sheets google-sheets-api

我为 Google 电子表格创建了一个脚本,该脚本只是添加了一个新的菜单项,如下所述 Custom Menu Items in a Spreadsheet 。然后我将此脚本部署为 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 Spreadsheets UI。

欢迎任何建议。谢谢!

最佳答案

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

关于google-apps-script - 使用 Google Web 应用程序扩展 Google 电子表格 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13921003/

相关文章:

java - 如何在谷歌电子表格 API 中复制工作表

json - 尝试在 GAS 中创建 GCM 通知 key 时出现错误 "NOT A JSON REQUEST"

google-apps-script - 如何复制电子表格并将其保存到特定文件夹?

javascript - 如何将 Stripe 支付与 Google Apps 脚本集成

google-apps-script - 更新 Google 表格 "Filter View"并添加新范围

javascript - 查找用户在 Google 表格中输入的变量并使用该变量从其他两个表格返回信息

google-apps-script - 查找给定标题行名称的列

javascript - 选择列表 - 多项选择 - Google 电子表格

javascript - Google Sheets API - 无法在 ProtectedRange 列中附加数据