3

给定一个包含“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 脚本的范围内对这些“字符串”进行自定义排序?

相关文章:

这是一个几乎直接来自Gustavo Moura的代码片段。

你可以在这里试试我的版本。

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;
}
4

1 回答 1

0

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

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

.setOption("sort", "disable")

我没有尝试过,但我不认为谷歌会自动对数据进行排序,打破你自己的排序。

于 2012-12-07T14:50:54.953 回答