「リリース番号」の列を含む dataTable が与えられた場合、結果の 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 の範囲内でカスタムソートするにはどうすればよいですか?
関連記事:
- jsを使用してソフトウェアのバージョン番号を比較するには? (数字のみ)
- 数値、文字、文字を含むvarchar列(SQL)をソートする方法は?
- SQL Server クエリを使用して「バージョン番号」列を一般的に並べ替える方法
これは、 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;
}