不知道为什么会发生意外错误:
我正在尝试编辑字幕面板,但如果我制作“返回应用”,则会出现错误。 我的功能面板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 **
问题出现在小组中(我试图清除代码)
编辑:(我只是想删除captionPanel而我不能。意外错误)
function createActivatePanelAdmin(){
var app = UiApp.getActiveApplication();
var verticalPanelAdmin = app.getElementById("verticalPanelAdmin");
var mainPanelIndex = app.getElementById("mainPanelIndex");
verticalPanelAdmin.remove(mainPanelIndex);
return app;
};
答案 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,因为它需要编辑面板的内容