Google Script Error - 无法找到方法添加

时间:2012-09-21 23:04:36

标签: google-apps-script

我对这个错误感到困惑。我无法弄清楚我错过了什么。如果没有调用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();
}

1 个答案:

答案 0 :(得分:0)

您的header var是UiInstance - 事实上它与app的实例相同,为方便通过调用.setTitle()进行链接而返回。

.add()方法正在寻找一个Widget作为参数,而不是找到它。

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

var app = UiApp.createApplication().setTitle('Detention Attendance');