0

不知道为什么会发生返回意外错误:

我正在尝试编辑字幕面板,但如果我制作“返回应用程序”,则会出现错误。我的功能面板管理员创建我的标题面板,我的功能 createActivatePanelAdmin 获取标题面板并尝试编辑内容,因为如果选择了一个项目栏,标题面板的内容必须更改。

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;
  };

**感谢帮助!而且我不得不说 flextable 没问题,我是在其他站点上构建的,所以不要花时间尝试查看错误是否在 Flextable 或 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

很难说问题到底出在哪里。您可以通过注释部分代码来调试您的应用程序,以便您可以缩小问题所在的区域。我多次遇到此类错误并遵循这种方法。希望这对你也有帮助。

快乐的应用程序脚本

于 2012-10-09T17:42:23.127 回答
0

我同意 Waqar,您的代码不可测试,因为它调用在其外部定义的变量。

当您尝试通过 ID 获取具有错误 ID(即不存在的 ID)的东西时,通常会发生这些错误,因此我建议您仔细检查您使用的每个面板和小部件的每个 ID,可能存在拼写错误某处...

编辑:我想我(也许)发现了一个错误:

在您编写的代码的第一部分:

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

在第二个函数中,您使用以下命令调用此面板:

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

身份证不一样……正常吗?

编辑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 回答