3

「リリース番号」の列を含む 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 の範囲内でカスタムソートするにはどうすればよいですか?

関連記事:

これは、 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")

私はこれを試したことはありませんが、Google が自動的にデータを並べ替えて、独自の並べ替えを壊すとは思いません。

于 2012-12-07T14:50:54.953 に答える