【发布时间】:2013-08-26 02:20:38
【问题描述】:
我正在使用一个包含多个工作表的电子表格,我希望我的自定义工具栏菜单能够根据当时打开的工作表动态更改。
当活动电子表格更改时,是否有可以调用的事件?或者当我在工作表之间更改时更新菜单的其他方法。
【问题讨论】:
标签: google-apps-script google-sheets
我正在使用一个包含多个工作表的电子表格,我希望我的自定义工具栏菜单能够根据当时打开的工作表动态更改。
当活动电子表格更改时,是否有可以调用的事件?或者当我在工作表之间更改时更新菜单的其他方法。
【问题讨论】:
标签: google-apps-script google-sheets
使用这个小代码可以创建一个基于活动工作表的动态菜单。
var ss = SpreadsheetApp.getActiveSpreadsheet();
function onOpen() {
ss.addMenu("Extra",
[{name: "Sheet A", functionName: "A"},
{name: "Sheet B", functionName: "B"},
{name: "Sheet C", functionName: "C"}
]);
}
function onEdit() {
var activeSheet = ss.getActiveSheet().getName(), nMenu;
ss.removeMenu("Extra");
switch (activeSheet) {
case "A":
nMenu = [{name: "Sheet B", functionName: "B"},
{name: "Sheet C", functionName: "C"}];
break;
case "B":
nMenu = [{name: "Sheet A", functionName: "A"},
{name: "Sheet C", functionName: "C"}];
break;
case "C":
nMenu = [{name: "Sheet A", functionName: "A"},
{name: "Sheet B", functionName: "B"}];
break;
}
ss.addMenu("Extra", nMenu);
}
我为你创建了一个示例文件:Dynamic Menu
仅在编辑活动工作表中的任何单元格时更改菜单。
【讨论】:
selectTab 上不可能有事件处理程序。