Google apps script 使用“对表格图表进行排序”;发布编号“;柱
给定一个包含“版本号”列的dataTable,如何在该列上对生成的TableChart进行正确排序 以下是表示“版本号”的字母数字字符串示例: 此示例所需的排序顺序为:Google apps script 使用“对表格图表进行排序”;发布编号“;柱,google-apps-script,google-visualization,Google Apps Script,Google Visualization,给定一个包含“版本号”列的dataTable,如何在该列上对生成的TableChart进行正确排序 以下是表示“版本号”的字母数字字符串示例: 此示例所需的排序顺序为: "1.0", "2.0.0.2", "2.0.0.142", "2.10", "10.2", "12.0.1" 由于这些值的格式,它们必须被视为“字符串”,因此按字母顺序排序。这会产生一个不符合逻辑“发布”顺序的列表: 有很多方法可以比较这些值,所以这不是这个问题的重点。相反,我如何在谷歌应用程序脚本的范围内对这些“字符串”
"1.0", "2.0.0.2", "2.0.0.142", "2.10", "10.2", "12.0.1"
由于这些值的格式,它们必须被视为“字符串”,因此按字母顺序排序。这会产生一个不符合逻辑“发布”顺序的列表:
有很多方法可以比较这些值,所以这不是这个问题的重点。相反,我如何在谷歌应用程序脚本的范围内对这些“字符串”进行自定义排序
相关职位:
不能为图表数据表提供排序功能。但是,在将数据添加到表中之前,可以对数据进行自己的排序。将每行推送到一个数组中,并使用自己的排序函数调用.sort(),该函数比较每行第一个索引中的版本号。你发布的第一个链接看起来有一个很好的答案 如果要在表格图表中保持数据排序,请禁用表格图表上的排序,以便用户无法更改排序
.setOption("sort", "disable")
我还没有尝试过这个,但我不认为谷歌会自动排序数据,打破你自己的排序。谢谢Frederic,但禁用排序不是一个选项-需要“点击排序”功能。这可能看起来不太好,但你可以将发布的每一部分都制作成一列:
.addRow([“12”、.0”、.1)、70、60]
。除此之外,我想不出任何东西。谢谢你的想法……我把它做得更进一步了,创建了一个函数来规范化单个列中的版本号。例如,“12.0.1”变成了“012.000.000.0000”。这不完全是我想要的,但它确实满足了能够按该列排序的要求。Unf有趣的是,这些数字在输入中的显示方式不同,因此用户会感到困惑。这可能会导致更多的困惑,但如果在将这些版本添加到数据表之前对其进行排序,则可以添加另一个“索引”列1..n并告诉用户按此进行排序。我必须对我有月度数据的图表执行类似的操作,我必须使用转换为数字的日期创建一个过滤器。刚才看到GViz表文档中的showRowNumber
和firstRowNumber
属性。这些属性添加了一个行号列。您可以在中使用图表属性使用.setOption(名称、值)
"1.0", "10.2", "12.0.1", "2.0.0.142", "2.0.0.2", "2.10"
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;
}
.setOption("sort", "disable")