0

我一直对这个错误感到困惑。我一直无法弄清楚我错过了什么。如果没有对 headPanel 的调用,UI 可以正常工作,但不会插入标题或文本标签,因此我添加了水平面板以希望添加文本,但遗憾的是错误。请帮我解决这个问题,我需要知道我在搞砸什么。

function doGet(e){
  var app = UiApp.createApplication();
  var headPanel = app.createHorizontalPanel().setId('headPanel');
  var header = app.setTitle('Detention Attendance');
  var label = app.createLabel("Please enter attendance for Detention by clicking the       checkbox next to the student's name if they were present. Then click Sumbit.");
  headPanel.add(header);  //* ERROR OCCURS HERE
  headPanel.add(label);
  app.add(pane);

  var panel = app.createVerticalPanel();
  var flexTable = app.createFlexTable().setStyleAttribute('border', '2px solid black')
      .setStyleAttribute('borderCollapse','collapse')
      .setBorderWidth(2); 
  //Get Data from spreadsheet
  var spreadsheetId = 'xxxxxxxxxxxxxxxxxxxxxxxx';//Change it to your Spreadsheet ID
  var dataArray = getData(spreadsheetId);
 //Load data into table cells
  Logger.log(dataArray);
  for (var row = 0; row<dataArray.length; row++){
  if (row > 0) {
    var ticketDate = dataArray[row] [0];
    var dateStamp = Utilities.formatDate(ticketDate, "America/Chicago", "MM/dd/yyyy");
    Logger.log("dateStamp = " +dateStamp);
    dataArray[row] [0] = dateStamp;
    var ticketDate2 = dataArray[row] [16];
    var dateStamp2 = Utilities.formatDate(ticketDate2, "America/Chicago", "MM/dd/yyyy");
    dataArray[row] [16] = dateStamp2;
    Logger.log("DateStamp = " +dateStamp2);
    }

  flexTable.setStyleAttribute("color", "purple").setText(row, 2, dataArray[row][2].toString()).setWidth('300px');
  flexTable.setText(row, 0, dataArray[row][0].toString()).setWidth('600px');
  flexTable.setText(row, 4, dataArray[row][16].toString()).setWidth('300px');    
}  

panel.add(flexTable);
app.add(panel);
return app;
}

function getData(spreadsheetId){
   var ss = SpreadsheetApp.openById(spreadsheetId);
   var sheet = ss.getSheets()[0].getDataRange();
   Logger.log(sheet);

   return sheet.getValues();
}
4

1 回答 1

0

您的headervar 是一个UiInstance - 实际上它与 的实例相同app,返回是为了方便通过对.setTitle().

.add()方法正在寻找一个 Widget 作为参数,但没有找到它。

你不需要保留那个headervar - 它只会给你带来麻烦。实际上,您可以在创建 UiApp 实例时设置 Title:

var app = UiApp.createApplication().setTitle('Detention Attendance');
于 2013-07-19T02:08:42.547 回答