0

如何在弹性表格的每一行的一个单元格中添加复选框、列表框或单选按钮。我正在使用应用程序脚本。我尝试了以下操作,但它仅在最后一行的一个单元格中显示列表框:

function doGet(){
    var app = UiApp.createApplication();
    var panel = app.createVerticalPanel();
    var listBox = app.createListBox();
    listBox.addItem("Yes").addItem("No").setName("myListBox");
    var table = app.createFlexTable().setId("myTable");

    table.setBorderWidth(1)
    table.setCellPadding(1);

    //Get Data from spreadsheet

    var doc = SpreadsheetApp.openById('Spreadsheet ID');
    var spreadsheetId = 'Spreadsheet ID';
    var dataArray = getData(spreadsheetId);

    for (var row = 0; row<dataArray.length; row++){
    for (var col = 0; col<dataArray[row].length; col++){

        if( col == 1){
            table.setWidget(row, col, listBox);
        }
    table.setText(row, col, dataArray[row][col].toString());


    }
    } 
    app.add(table);
    return app;
    }

    function getData(spreadsheetId){
    var ss = SpreadsheetApp.openById(spreadsheetId);
    var sheet = ss.getSheets()[0].getDataRange();
    return sheet.getValues();
}
4

1 回答 1

0

您只是忘记在条件中使用“else”,没有“else”,文本会覆盖其他小部件。

  for (var row = 0; row<dataArray.length; row++){
    for (var col = 0; col<dataArray[row].length; col++){
      if( col == 1){
        table.setWidget(row, col, listBox);
       }else{
         table.setText(row, col, dataArray[row][col].toString());
         }
      }
    } 

编辑:我忘记了另一点,更重要的是:您不能listBox多次使用相同的小部件,listBox每次将一个小部件添加到flexTable...时都应该定义一个新小部件,因此将app.createListBox条件if放在循环中并考虑给予他们每个人都有不同的名称和ID。

于 2013-11-13T18:10:06.990 回答