在活动电子表格更改时调用事件

时间:2013-08-25 11:33:02

标签: google-apps-script google-sheets

我正在使用包含多张工作表的电子表格,我希望我的自定义工具栏菜单会根据当时打开的工作表动态更改。

当活动电子表格更改时是否可以调用事件?或者在我在工作表之间切换时更新菜单的其他方法。

1 个答案:

答案 0 :(得分:2)

使用这个小代码,可以根据活动工作表创建动态菜单。

代码

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

备注

当编辑活动工作表中的任何单元格时,菜单仅 更改。