SpreadsheetApp.AddMenu(名称,条目数组)在电子表格的顶部栏中生成一个新菜单。或者,有getUI.createMenu,它会产生一个项目数组。两者都很好,不确定哪个更好。
是否可以根据活动工作表的内容禁用和启用某些菜单条目?
有没有办法告诉特定工作表何时变为活动状态?如果没有,我可以使用onChange或onEdit事件,因为只有当用户更改了特定工作表时才需要启用我想要禁用的菜单项。
答案 0 :(得分:3)
脚本可以通过调用Interlocked.Add(int, int)
来查找当前处于活动状态的工作表。但是,当用户从一个工作表切换到另一个工作表时,没有触发器触发:这不被视为编辑或更改。使用问题中所述的计划B:在编辑/更改时检测活动工作表。
至于两种方法:getActiveSheet
语法是旧版Google表格中唯一可用的语法。添加.addMenu
后,保留旧方法以保持兼容性。旧的语法更简单,但新方法有更多选项,例如添加分隔符和子菜单。见What is the difference between creating a menu with .getUI().createMenu() and .addMenu()?
无法使自定义菜单的项目显示为已禁用。相反,当用户尝试调用当前上下文中不可用的选项时,您可能希望显示一条不太烦人的消息,例如toast,以通知他们。