我为Google Spreadsheets创建了一个脚本,这个脚本只是添加了一个新的菜单项,如Custom Menu Items in a Spreadsheet所述 . 然后我将此脚本部署为Web应用程序,并且我希望安装该应用程序的所有用户都能够看到新的菜单项 . 而且我在这一点上陷入困境 .
据我所知,当您将脚本部署为Web App时,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以及其他菜单和对话框 .
欢迎任何建议 . 谢谢!
1 回答
将脚本部署为Web应用程序时,Web应用程序的用户只能看到来自doGet功能的内容 . 您可以使用UiApp或HtmlService创建内容,并返回此内容以在浏览器中呈现 . 您的新菜单项附加到电子表格中,因此只有当用户转到电子表格本身时才会显示它们(激活onOpen触发器等) .