【问题标题】:Call an event when the active spreadsheet changes活动电子表格更改时调用事件
【发布时间】:2013-08-26 02:20:38
【问题描述】:

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

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

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    使用这个小代码可以创建一个基于活动工作表的动态菜单。

    代码

    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

    备注

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

    【讨论】:

    • 谢谢,我正在查看 onEdit 函数,所以如果我理解正确,如果不先编辑单元格来调用事件,是否没有其他方法可以做到这一点?
    • @T27M selectTab 上不可能有事件处理程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多