如果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;
}
答案 0 :(得分:0)
您无法为图表数据表提供排序功能。但是,在将数据添加到表之前,您可以对数据进行自己的排序。将每一行推送到一个数组,并使用您自己的排序函数调用.sort(),该函数比较每行第一个索引中的版本号。您发布的第一个链接看起来很有答案。
如果要将数据保存在表格图表中,请在TableChart上禁用排序,以便用户无法更改排序。
.setOption("sort", "disable")
我没有试过这个,但我不认为Google会自动对数据进行排序,从而打破你自己的排序。