2

2つのメニュー項目 ( AB )を持つ単純なメニューを作成する方法を知る必要があります

例を作成できますが、常に失敗します。

コード

      var handler = app.createServerHandler();
     //Create menu bar
      var menuBar = app.createMenuBar(true);

      var data =  ss.getSheets()[LOG_SHEET_INDEX].getDataRange().getValues();

      var lastRow = ss.getLastRow();
      for(var row = 1; row < lastRow; row++){
        var id_menu =1;
        if(data[row][0]==0){
          var nivel = data[row][1];
          var menuItem = app.createMenuItem(data[row][2], handler);

          var separator = app.createMenuItemSeparator();
          menuBar.addSeparator(separator);
          var subMenu = app.createMenuBar(true).setId("subMenu"+nivel);
          for(var i = 1; i< lastRow; i++){
            if(data[i][0]==nivel){
              var sm = app.getElementById("subMenu"+nivel)
              this[sm.addItem(data[row][2], handler)];
            }

          }menuItem.setSubMenu(sm);

        }menuBar.addItem(data[row][2], app.createMenuBar(true));

      }


      app.add(menuBar);

結果

不合格

そして、次のようなものが必要です(A1、B1、B2、B3を非表示にする:フォーカスA | Bを表示する):

    ____
    A
        A1
    ____
    B
        B1
        B2
        B3

これは私のスプレッドです:

失敗2

助けてください!!

4

3 に答える 3

1

うーん、セルジュが私の前に指摘したように。答えが間違っています。その間、私は本当の理由が何であるかを知りました: サブメニューを持つ MenuItem にはハンドラーがあってはなりません:

 var menuBar=app.createMenuBar();
 var subb1=app.createMenuBar(true);
 subb1.addItem (app.createMenuItem("S1", handler1));
 subb1.addItem (app.createMenuItem("S2", handler2));
 var mi1=app.createMenuItem("X1", null); // passing null and not a handler makes submenu work...
 mi1.setSubMenu(subb1);
 menuBar.addItem(mi1);
 app.add(menuBar);
于 2012-11-14T21:54:40.783 に答える
1

私はそれをしましたが、パラメータ「e」が未定義または無効であるため、使用できないハンドラー(サーバーハンドルとクライアントハンドラーの両方)に問題があります:(MenuItemIDの問題もあります)

  • 「e」を知ってどのボタンが押されているかを知る必要があり、何が悪いのかわかりません。

    do get(){
    var app = UiApp.createApplication()
    var menu = menuBar();
    var panel = app.createAbsolutePanel().setId("Panel");
    var horizontalPanel = app.createHorizontalPanel().setId("horizontalPanel");
    var verticalPanelDoc = app.createVerticalPanel().setId("verticalPanelDoc");
    var verticalPanelMenu = app.createVerticalPanel().setId("verticalPanelMenu");
    var scrollPanelDoc = app.createScrollPanel().setId("scrollPanelDoc").setSize('1000', '600');
    
    verticalPanelMenu.add(menu);
    verticalPanelDoc.add(scrollPanelDoc);
    horizontalPanel.add(verticalPanelMenu);
    horizontalPanel.add(verticalPanelDoc);
    
    panel.add(horizontalPanel)
    app.add(panel);
    
    return app;
    }
    
    
    function show(e){
    
      var ss =SpreadsheetApp.openById(TABLA_MENU);
      //**testing 'e' = undefined or void**
      var e_source = e.parameter.source;
      ss.getSheetByName("menu").getRange("B"+6).setValue(e_source);
      ss.getSheetByName("menu").getRange("C"+6).setValue(e);
      //**result in cells :   e_source = undefined   e = {parameter={}}**
    
      var app = UiApp.getActiveApplication();
      var panel = app.getElementById("Panel");
      var verticalPanelDoc = app.getElementById("verticalPanelDoc");
      var horizontalPanel = app.getElementById("horizontalPanel");
      var scrollPanelDoc = app.getElementById("scrollPanelDoc");
      verticalPanelDoc.clear();
      verticalPanelDoc.remove(scrollPanelDoc);
    
      //**this will depend of 'e' **
    
      var panelToShow = app.createCaptionPanel().setTitle("Show").setText("Show");
      //
      var label = app.createLabel().setText("Works!");
      panelToShow.add(label);
      verticalPanelDoc.add(panelToShow);
    
    
      return app;
    };
    
    function menuBar(){
      var ss = SpreadsheetApp.openById(TABLA_MENU);
      var app = UiApp.getActiveApplication();
      var absolutePanel = app.getElementById("absolutePanel");
      var verticalPanelMenu = app.getElementById("verticalPanelMenu");
      var horizontalPanel = app.getElementById("horizontalPanel");
    
      var option_menu = app.getElementById("option_menu");
    
      var arrayMenu = ss.getSheetByName("menu").getDataRange().getValues();
      var arraySubMenu =ss.getSheetByName("submenu").getDataRange().getValues();
      var arrayEnlacesSubMenu =ss.getSheetByName("enlaces").getDataRange().getValues();
      var test1 = arraySubMenu[1][1];//A1
      var test2 = arrayMenu[1];//A
      var test3 = arrayEnlacesSubMenu[1][1]
      // **create menu**
      var menuBar = app.createMenuBar(true).setAnimationEnabled(true);
    
      var handler = app.createServerHandler("show")
      .addCallbackElement(verticalPanelMenu)
      .addCallbackElement(horizontalPanel)
      .addCallbackElement(absolutePanel);
    
      // **add structure to menu**
      for(var k=1; k<arrayMenu.length; k++) {
    
        menuBar.addItem(arrayMenu[k][1], arrayMenu[k][1] = app.createMenuBar(true).setWidth("100%")).setWidth("100%");
    
        for(var j=1; j<arraySubMenu[k].length; j++){
          if(arraySubMenu[k][j]!=''){
            var enlace = arrayEnlacesSubMenu[j][1].toString();
    
            var a = arrayMenu[k][1];
            var b = arraySubMenu[k][j];
            //var c = this[arrayMenu[k][1]].addItem(arraySubMenu[k][j],handler).addSeparator(app.createMenuItemSeparator())
            arrayMenu[k][1].addItem(arraySubMenu[k][j],handler).setId("1"+arraySubMenu[k][j])).addSeparator(app.createMenuItemSeparator());
            //**THIS ID nither set the ID* show in navigator ID = ... class="gwt-MenuItem" id="gwt-uid-18" role="menuitem" aria-hasp....pan="1">Publicaciones 2012</td>
          }
        }
        menuBar.addSeparator(app.createMenuItemSeparator());
      } 
      return menuBar;
    };
    

メニュースプレッドシート

メニュー1

submenuスプレッドシート

ここに画像の説明を入力

于 2012-11-15T08:50:42.023 に答える
0

申し訳ありませんが、(まだ) 入手できません: http://code.google.com/p/google-apps-script-issues/issues/detail?id=317

于 2012-11-14T20:59:52.803 に答える