使用“版本号”列对TableChart进行排序

时间:2012-12-05 03:25:18

标签: google-apps-script google-visualization

如果dataTable包含一列“Release Numbers”,那么如何在该列上正确排序生成的TableChart?

这些是代表“发行号”的字母数字字符串的示例:

"1.0", "12.0.1", "2.10", "2.0.0.142", "2.0.0.1_2", "10.2"

此样本的所需排序顺序为:

"1.0", "2.0.0.2", "2.0.0.142", "2.10", "10.2", "12.0.1" 

由于这些值的格式,它们必须被视为“字符串”,因此按字母顺序排序。这会导致列表不符合逻辑“发布”顺序:

"1.0", "10.2", "12.0.1", "2.0.0.142", "2.0.0.2", "2.10" 

有许多比较价值的解决方案,所以这不是这个问题的焦点。相反,我如何在Google Apps-Script的范围内对这些“字符串”进行自定义排序?

相关帖子:

这是几乎直接从Gustavo Moura解除的代码段。

您可以试用我的here版本。

function doGet() {    
  // Populate the DataTable.  We'll have the data labels in   
  // the first column, "Quarter", and then add two data columns,  
  // for "Income" and "Expenses"  
  var dataTable = Charts.newDataTable()      
        .addColumn(Charts.ColumnType.STRING, "Release")      
        .addColumn(Charts.ColumnType.NUMBER, "Income")      
        .addColumn(Charts.ColumnType.NUMBER, "Expenses")      
        .addRow(["1.0", 60, 55])      
        .addRow(["10.2", 50, 60])      
        .addRow(["2.10", 100, 50])
        .addRow(["12.0.1", 70, 60])      
        .addRow(["2.0.0.142", 30, 50])
        .addRow(["2.0.0.1_2", 114, 75])
        .build();

  // Build the chart. 
  var chart = Charts.newTableChart()
      .setDataTable(dataTable)  
//    .setTitle("Income and Expenses per Release")
      .build();

  // Add our chart to the UI and return it so that we can publish  
  // this UI as a service and access it via a URL.  
  var ui = UiApp.createApplication();  
  ui.add(chart);  
  return ui;
}

1 个答案:

答案 0 :(得分:0)

您无法为图表数据表提供排序功能。但是,在将数据添加到表之前,您可以对数据进行自己的排序。将每一行推送到一个数组,并使用您自己的排序函数调用.sort(),该函数比较每行第一个索引中的版本号。您发布的第一个链接看起来很有答案。

如果要将数据保存在表格图表中,请在TableChart上禁用排序,以便用户无法更改排序。

.setOption("sort", "disable")

我没有试过这个,但我不认为Google会自动对数据进行排序,从而打破你自己的排序。