0

予期しないエラーが発生した理由がわからない:

キャプションパネルを編集しようとしていますが、「アプリを返す」にするとエラーが表示されます。関数パネル管理者がキャプションパネルを作成し、関数 createActivatePanelAdmin がキャプションパネルを取得してコンテンツを編集しようとします。1 つのアイテムバーが選択されている場合、キャプションパネルのコンテンツを変更する必要があるためです。

function panelAdmin(){

  var app = UiApp.getActiveApplication();
  var ss = SpreadsheetApp.openById(LOGS_SHEET_ID);
  var verticalPanelAdmin = app.createVerticalPanel().setId("verticalPanelAdmin");
  var mainPanelIndex = app.createCaptionPanel().setText("Index");

  var menuBar = app.createMenuBar().setId("menuBar").setAnimationEnabled(true);//For vertical menubar(true)

  var hdPanelAdminIndex = app.createServerHandler("createPanelAdminIndex").addCallbackElement(mainPanelIndex);
  var hdPanelCreateUserPanel = app.createServerHandler("createUserPanelAdmin").addCallbackElement(mainPanelIndex);
  var hdPanelActive = app.createServerHandler("createActivatePanelAdmin").addCallbackElement(mainPanelIndex);
  var hdPanelDeleteUserPanel = app.createServerHandler("deleteUserPanel").addCallbackElement(mainPanelIndex);
  var hdPanelSearchUserPanel = app.createServerHandler("searchUserPanel").addCallbackElement(mainPanelIndex);
  var hdPanelExitUserPanel = app.createServerHandler("ExitUserPanel").addCallbackElement(mainPanelIndex);

  var menuItem0 = app.createMenuItem('Inicio ', hdPanelAdminIndex);
  var menuItem1 = app.createMenuItem('Crear Usuarios', hdPanelCreateUserPanel);
  var menuItem2 = app.createMenuItem('Activar Usuarios', hdPanelActive);
  var menuItem3 = app.createMenuItem('Borrar Usuarios', hdPanelDeleteUserPanel);
  var menuItem4 = app.createMenuItem('Buscar', hdPanelSearchUserPanel);
  var menuItem5 = app.createMenuItem('Salir', hdPanelExitUserPanel);
  //top level menu items


  //create menuItem separators
  var separator0 = app.createMenuItemSeparator();
  var separator1 = app.createMenuItemSeparator();
  var separator2 = app.createMenuItemSeparator();
  var separator3 = app.createMenuItemSeparator();
  var separator4 = app.createMenuItemSeparator();
  var separator5 = app.createMenuItemSeparator();

  //Add the menu item separators and menuItem to the MenuBar
  menuBar.addSeparator(separator0).addItem(menuItem0).addSeparator(separator1)
    .addItem(menuItem1).addSeparator(separator2)
    .addItem(menuItem2).addSeparator(separator3)
    .addItem(menuItem3).addSeparator(separator4)
    .addItem(menuItem4).addSeparator(separator5)
    .addItem(menuItem5).addSeparator(separator0);
  verticalPanelAdmin.add(menuBar);
  verticalPanelAdmin.add(mainPanelIndex);
  app.add(verticalPanelAdmin);

  return app;

};

  function createActivatePanelAdmin(){

  var ss = SpreadsheetApp.openById(LOGS_SHEET_ID);
  var app = UiApp.getActiveApplication();
  var verticalPanelAdmin = app.getElementById("verticalPanelAdmin");

  var menuBar = app.getElementById("menuBar");
  var mainPanelIndex = app.getElementById("mainPanelIndex");
      mainPanelIndex.setText("Sistema de creación de usuarios");

  var mainPanelActivateAdmin = app.createHorizontalPanel().setId("mainPanelActivateAdmin");


      /*FROM HERE WORKS CORRECTLY (TESTED)*/

  var lastCol = ss.getLastColumn();
  var rowsToConfirm = confirmReg();
  var lastRow = numRows(rowsToConfirm);


  if (rowsToConfirm != null){
    var flexTableRegAdmin = app.createFlexTable().setId("flexTableRegAdmin").setBorderWidth(1);
    flexTableRegAdmin.setText(0, 0, "ID");
    flexTableRegAdmin.setText(0, 1, "NOMBRE");
    flexTableRegAdmin.setText(0, 2, "PASS");
    flexTableRegAdmin.setText(0, 3, "EMAIL");
    flexTableRegAdmin.setText(0, 4, "ESTADO");
    flexTableRegAdmin.setText(0, 5, "ACTIVAR");

    var check = new Array(lastRow);

    for(var r = 0; r < lastRow; r++){
      for(var c = 0; c < lastCol; c++){
        var text = rowsToConfirm[r][c].toString();

        flexTableRegAdmin.setText(r+1, c, text);


      }
      var id = rowsToConfirm[r][0];
      check[r] = app.createCheckBox().setName("chk_"+id).setId("chk_"+id);
      flexTableRegAdmin.setWidget(r+1, lastCol, check[r]);
    }//end fors
  }//end if

  var botMod = app.createButton().setText("Activar").setId("botStatus");
  var botHandle = app.createServerHandler("changeStatus").addCallbackElement(mainPanelActivateAdmin);
  botMod.addClickHandler(botHandle);

  /*TO HERE*/


  mainPanelActivateAdmin.add(flexTableRegAdmin);
  mainPanelActivateAdmin.add(botMod);

  mainPanelIndex.add(mainPanelActivateAdmin);
  return app;
  };

**手伝ってくれてありがとう!そして、フレックステーブルは大丈夫だと言わざるを得ません。他のサイトでビルドしたので、エラーがフレックステーブルにあるのかbotton_sendにあるのかを確認するのに時間を費やさないでください**

問題はパネルにあります(コードをクリアしようとしました)

それは

編集:(キャプションパネルを削除しようとしているだけで、できません。予期しないエラー)

function createActivatePanelAdmin(){

  var app = UiApp.getActiveApplication();
  var verticalPanelAdmin = app.getElementById("verticalPanelAdmin");
  var mainPanelIndex = app.getElementById("mainPanelIndex");
  verticalPanelAdmin.remove(mainPanelIndex);
  return app;
  };
4

3 に答える 3

0

私はWaqarに同意します。コードは、外部で定義された変数を呼び出すため、テストできません。

これらのエラーは、間違ったID(つまり、存在しないID)を持つIDで取得しようとすると頻繁に発生するため、使用するすべてのパネルとウィジェットのすべてのIDをダブルチェックすることをお勧めします。タイプミスがある可能性があります。どこか...

編集:私が(多分)見つけたと思う1つのエラーがあります:

あなたが書いたコードの最初の部分で:

  var verticalPanelAdmin = app.createVerticalPanel().setId("verticalPanelAdminIndex");

2番目の関数では、このパネルを次のように呼び出します。

  var verticalPanelAdmin = app.getElementById("verticalPanelAdmin");

IDが違います...それは正常ですか?

編集2:ここでも問題があります...最初の機能:

 var mainPanelIndex = app.createCaptionPanel().setText("Index");// no ID is defined

それからあなたはそれを

  var mainPanelIndex = app.getElementById("mainPanelIndex");

試してみて、自分自身もチェックしてください...

于 2012-10-09T20:39:31.720 に答える
0

問題は次のとおりです。


1 - パネルを編集できない (作成および表示)

2 - オプション メニューごとに新しいパネルを作成する必要があります。


解決:


1 - 明確なアプリケーションを作成します(私の場合、絶対パネルをクリアすることを好みます:すべての前に追加しました)。

2 - 新しい垂直パネル (「V」) を作成する

3 - 新しい絶対パネル (「A」) を作成する

4 - ID でメニューバーを取得します (変更する予定がないため、これは可能です)

5 - 新しいキャプション パネルの作成 (「captionActivePanel」)。

    UiApp.getActiveApplication app = var ();
    app.getElementById absolutePanel = var ("absolutePanel");
    app.remove (absolutePanel);
    var a = app.createAbsolutePanel().setId("a");
    var v = app.createVerticalPanel().setId("v");
    var menuBar = app.getElementById("menuBar");
    var captionActivePanel = app.createCaptionPanel().setId(captionActivePanel).setText("Bienvenido al sistema de activación de usuarios");

導入したいパネル (この場合は「flexTableRegAdmin」と例のシンプルなボタン) ができたら、それを CAPTION PANEL 内に導入します。

    v.add (flexTableRegAdmin);
    v.add (botMod);
    captionActivePanel.add (v)

    a.add (menuBar);
    a.add (captionActivePanel);
    app.add (a);

Waqar Ahmad 物事を機能させるにはコメントが必要であることを私に理解させてくれてありがとう!! パネルの内容を編集する必要があるため、そのバグを報告できると思います

于 2012-10-10T08:36:05.623 に答える
0

問題が正確にどこにあるかを言うのは難しいです。問題が存在する領域を絞り込めるように、コードの一部にコメントを付けてアプリケーションをデバッグできます。私はそのようなエラーに何度も遭遇し、このアプローチに従います。これがあなたにも役立つことを願っています。

Happy Apps スクリプティング

于 2012-10-09T17:42:23.127 に答える