【问题标题】:the value from Tag of flextable blank来自 flextable 空白标签的值
【发布时间】:2012-07-24 03:35:25
【问题描述】:

我是谷歌应用脚​​本的初学者。 我想从另一个功能上的 flextable 标记中获取价值。我之前在 doGet() 函数上使用 setTag("init") 启动标签,但是当我调用 getTag() 时,什么都没有(空白) 这是我的代码

var SPREADSHEET_ID = "xxx";

function doGet(){
  var app = UiApp.createApplication().setTitle('Request For Leaving');
  var panel = app.createVerticalPanel();
  var grid = app.createGrid(4, 4).setId('request');

  var employee = gsLibrary.getEmployee(SPREADSHEET_ID);

  var date1 = new Date();
  var preLabel = app.createLabel(': ').setText(': ');
  var preLabel2 = app.createLabel(': ').setText(': ');
  var preLabel3 = app.createLabel(': ').setText(': ');
  var preLabel4 = app.createLabel(': ').setText(': ');
  var preLabel5 = app.createLabel(': ').setText(': ');

  var employee = gsLibrary.getEmployee(SPREADSHEET_ID);
  var idLabel = app.createLabel('Employee ID ');
  var userIdLabel = app.createLabel(employee.employeeId).setId('userId').setTag(employee.employeeId);

  var yearLabel = app.createLabel('Year ');
  var yearDropdown = app.createListBox().setName("yearList").setId("yearList").setWidth('120px');

  var statusLabel = app.createLabel('Status ');
  var statusDropdown = app.createListBox().setName("statusList").setId("statusList").setWidth('120px');

  var searchButton = app.createButton("Search").setId("search");

  grid.setWidget(0, 0, idLabel)
    .setWidget(0, 1, preLabel5)
    .setWidget(0, 2, userIdLabel)
    .setWidget(1, 0, yearLabel)
    .setWidget(1, 1, preLabel4)
    .setWidget(1, 2, yearDropdown)
    .setWidget(1, 3, searchButton)
    .setWidget(2, 0, statusLabel)
    .setWidget(2, 1, preLabel3)
    .setWidget(2, 2, statusDropdown);

 var flexTable = app.createFlexTable()     
     .setId('myTable')
     .setTag('init')
     .setStyleAttribute('border','1px solid black')
     .setStyleAttribute("left","50px")
     .setStyleAttribute('borderCollapse','collapse')
     .setBorderWidth(1)
     .insertRow(0)
     .insertCell(0, 0).setStyleAttribute(0,0,"width","20px")
     .insertCell(0, 1).setStyleAttribute(0,1,"width","80px")
     .insertCell(0, 2).setStyleAttribute(0,2,"width","70px")
     .insertCell(0, 3).setStyleAttribute(0,3,"width","70px")
     .insertCell(0, 4).setStyleAttribute(0,4,"width","500px")
     .insertCell(0, 5).setStyleAttribute(0,5,"width","50px")
     .setText(0,0,'No. ')
     .setText(0, 1,'Leave Day(s)')
     .setText(0, 2,'Start Date')
     .setText(0, 3,'End Date')
     .setText(0, 4,'Description')
     .setText(0, 5,'Status')
     .setStyleAttribute('text-align','center').setCellPadding(10).setVisible(true);

  var searchHandler = app.createServerClickHandler('searchRequestList');   
  searchHandler.addCallbackElement(panel);   
  searchButton.addClickHandler(searchHandler);  
  setYearList(app,employee);
  setStatusList(app);

  panel.add(grid);
  panel.add(flexTable);
  app.setStyleAttribute("height","auto");
  app.add(panel);
  return app;
}

function setYearList(app,employee){
  var yearList = app.getElementById("yearList");
  var listYear=getAllYear(employee);
  var index=0;
  yearList.addItem("All Year");
  for (var i=0;i<listYear.length;i++){
    yearList.addItem(listYear[i]);
    index++;
  }

}

function getAllYear(user){
  var AllLeaveObjects = gsLibrary.getAllLeaveRequestByUser(SPREADSHEET_ID, user);
  var m_yearList=[];
  for (var i =0 ;i<AllLeaveObjects.length;i++){
   var status=true;
   var index;
   index=0;
    while (status==true && index<=m_yearList.length){
      if (gsLibrary.getYear(AllLeaveObjects[i].startDate)==m_yearList[index]){
        status =false;
     }
      index++;       
   }
    if (status==true){
      m_yearList.push(gsLibrary.getYear(AllLeaveObjects[i].startDate));

    }

  }

  m_yearList.sort();
  return m_yearList;
}

function setStatusList(app){
 var statusList = app.getElementById("statusList");
  var allStatus=getAllStatusName();
   statusList.addItem("All Status");
  for (var i=0;i<allStatus.length;i++){
    statusList.addItem(allStatus[i].status);
  }
}

function getAllStatusName(){
  var spreadsheetId = SPREADSHEET_ID;
  var sheet  = SpreadsheetApp.openById(spreadsheetId).getSheetByName("Status Request");
  var status = gsLibrary.getRowsData(sheet);  
  return status;
}

function getStatusNameByNum(num){
  var statusName;

  var allStatusName = getAllStatusName();
  for (var i =0 ;i<allStatusName.length;i++){
    if (num == allStatusName[i].statusCode){
      statusName = allStatusName[i].status;
    }
  }
  return statusName;
}

function searchRequestList(e){
    var app = UiApp.getActiveApplication();
    var employee = gsLibrary.getEmployee(SPREADSHEET_ID);
    var year=e.parameter.yearList;
    var status = e.parameter.statusList;

    fillTable(app,employee,year,status);
    return app;
}

function fill(table, LeaveRequest, index, row, tag){
  table.setText(index+1,0,index+1);
  table.setText(index+1,1,LeaveRequest[row].numberOfDays);
  table.setText(index+1,2,gsLibrary.convertDate(LeaveRequest[row].startDate));
  table.setText(index+1,3,gsLibrary.convertDate(LeaveRequest[row].endDate));
  table.setText(index+1,4,table.getTag()); //<--- this is the problem, always blank
  table.setText(index+1,5,getStatusNameByNum(LeaveRequest[row].status));
}

function setTagTable(){
  var app = UiApp.getActiveApplication();
  var table = app.getElementById("myTable");
  if(table.getTag() == 'init'){
    table.setTag() = '1';
  }
}

function fillTable(app,employee, year, status){
  setTagTable();
  var table =app.getElementById("myTable");
  var label = app.getElementById("showLabel");
  var LeaveRequest = gsLibrary.getAllLeaveRequestByUser(SPREADSHEET_ID, employee);
  var index = 0;


  if(year == "All Year" && status == "All Status"){
      for (var row = 0; row<LeaveRequest.length; row++){
        fill(table, LeaveRequest, index, row, ntag);
        index++;        
      }
  }
  else if(year == "All Year"){
      for (var row = 0; row<LeaveRequest.length; row++){
        if(getStatusNameByNum(LeaveRequest[row].status) == status){
          fill(table, LeaveRequest, index, row, ntag);
          index++;          
        }
      }
  }
  else if(status == "All Status"){
      for (var row = 0; row<LeaveRequest.length; row++){
        if(gsLibrary.getYear(LeaveRequest[row].startDate) == year){
          fill(table, LeaveRequest, index, row, ntag);
          index++;          
        }
      }
  }
  else {
      for (var row = 0; row<LeaveRequest.length; row++){
        if(gsLibrary.getYear(LeaveRequest[row].startDate) == year && getStatusNameByNum(LeaveRequest[row].status) == status){
          fill(table, LeaveRequest, index, row, ntag);
          index++;          
        }
      }
  }
}

gsLibrary 是我之前创建的库,没有问题... 谢谢你:D

【问题讨论】:

    标签: google-apps-script flextable


    【解决方案1】:

    您可以按照下面给出的方式获取任何小部件的标签

    function doGet(){
      ...
      var lbl = app.createLabel('Hello World').setId('lbl').setTag('tag'); 
      ...
    }
    
    function handleFunction(e){
      /* Some handler function invoked when a button is clicked etc. */
      var tag = e.parameter.lbl_tag; 
    }
    

    【讨论】:

    • 是的...但是我可以在没有处理程序的情况下获取标签的值吗?
    • 不,您只能从处理程序或 doPost() 中获取值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多