Google apps script 无法动态更新UI网格类Google应用程序脚本

Google apps script 无法动态更新UI网格类Google应用程序脚本,google-apps-script,google-api,google-apps,Google Apps Script,Google Api,Google Apps,我一直试图让我的UIAPP网格基于按钮插入按钮动态添加对象,但似乎无法做到这一点。我不知道为什么这不起作用。任何帮助都将不胜感激 function trackColumns() { var app = UiApp.createApplication().setWidth(500).setHeight(360).setTitle('Step 1: Select Information to Track'); var panel = app.createVerticalPanel().s

我一直试图让我的UIAPP网格基于按钮插入按钮动态添加对象,但似乎无法做到这一点。我不知道为什么这不起作用。任何帮助都将不胜感激

function trackColumns() 
{
  var app = UiApp.createApplication().setWidth(500).setHeight(360).setTitle('Step 1:  Select Information to Track');
  var panel = app.createVerticalPanel().setId("settingsPanel");
  var headerpanel = app.createVerticalPanel().setId("headerPanel").setStyleAttribute("background", "silver").setWidth(500);
  var columnPanel = app.createVerticalPanel();
  var mainGrid = app.createGrid(5, 1).setId("mainGrid");
  var columnGrid =app.createGrid(1,1).setId("columnGrid");
  var columnspanel = app.createHorizontalPanel().setId("columnspanel");
  var columnname = app.createTextBox().setText("Name");
  columnspanel.add(columnname);
  var addcolumnspanel = app.createHorizontalPanel().setId("addcolumnspanel");
  var addbuttonhandler = app.createServerHandler("addcolumn");
  addbuttonhandler.addCallbackElement(columnGrid);
  var addbutton = app.createButton().setId("btnaddcolumn").setText("Add another column").addClickHandler(addbuttonhandler);  
  addcolumnspanel.add(addbutton);   
   columnGrid.setWidget(0, 0, columnspanel);
   mainGrid.setWidget(1, 0, columnGrid);
   mainGrid.setWidget(2, 0, addcolumnspanel);
   panel.add(mainGrid);
   app.add(panel);
   ss.show(app);
   return app;
}


function trackster_addcolumn(e) {

  var app = UiApp.getActiveApplication();
  var columnspanel = app.createHorizontalPanel().setId("columnspanel");
  var columnname = app.createTextBox().setText("Name");
  var columntype = app.createListBox();
  columntype.addItem("Text");
  columntype.addItem("DropDown");
  columntype.addItem("Date");
  columntype.addItem("Number");
  columnspanel.add(columnname);
  columnspanel.add(columntype);
  var columngrid = e;
  columngrid.setWidget(3,0,columnspanel);
  return app; 
}

据我所知

如果您想在服务器函数后面的(3,0)中设置一些内容,则需要初始化该网格4行

var columnGrid=app.createGrid(1,1).setId(“columnGrid”)>
var columnGrid=app.createGrid(4,1).setId(“columnGrid”)

服务器函数名只需要与createServerHandler()中的内容匹配

function trackster\u addcolumn(e)
>
function addcolumn(e)

e具有传递给服务器函数的所有小部件的值,而不是实际的小部件本身。要获取网格


var columngrid=e>
var columngrid=app.getElementById('columngrid')

是的,trackster问题只是因为我输入了一些/复制了一些。网格设置为更大。var mainGrid=app.createGrid(5,1).setId(“mainGrid”);我经常遇到的错误是:在对象[object object]中找不到函数setWidget。忘记添加getElementByID。现在要是有办法检测网格中已经存在多少列就好了!flexPanel比grid更适合动态填充