编辑字幕面板

时间:2012-10-09 08:36:41

标签: google-apps-script

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

我正在尝试编辑字幕面板,但如果我制作“返回应用”,则会出现错误。 我的功能面板Admin创建了我的Captionpanel,我的函数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 **

问题出现在小组中(我试图清除代码)

Thats is

编辑:(我只是想删除captionPanel而我不能。意外错误)

function createActivatePanelAdmin(){

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

3 个答案:

答案 0 :(得分:0)

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

Happy Apps Scripting

答案 1 :(得分:0)

我同意Waqar,你的代码是不可测试的,因为它调用了在它之外定义的变量。

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

编辑:我认为我(也许)找到了一个错误:

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

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

并在第二个功能中使用以下方法调用此面板:

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

ID不同......这是正常的吗?

编辑2 :这里也有问题......第一个功能:

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

然后用

调用它
  var mainPanelIndex = app.getElementById("mainPanelIndex");

尝试并继续检查自己也请...

答案 2 :(得分:0)

问题是:


1 - 您无法编辑面板(已创建并显示)

2 - 必须在每个选项菜单中创建一个新面板。


<强> SOLUTION:


1 - 制作清晰的应用程序(在我的情况下,我更喜欢清除ABSOLUTE PANEL:我之前添加的)。

2 - 创建一个新的垂直面板(“V”)

3 - 创建一个新的绝对面板(“A”)

4 - 通过身份证获得MENUBAR(这是可能的,因为你不会改变它)

5 - 创建一个新的CAPTION面板(“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感谢您让我看到有必要发表评论让事情有效!我想我可以报告这个bug,因为它需要编辑面板的内容