Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用“对表格图表进行排序”;发布编号“;柱_Google Apps Script_Google Visualization - Fatal编程技术网

Google apps script 使用“对表格图表进行排序”;发布编号“;柱

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" 由于这些值的格式,它们必须被视为“字符串”,因此按字母顺序排序。这会产生一个不符合逻辑“发布”顺序的列表: 有很多方法可以比较这些值,所以这不是这个问题的重点。相反,我如何在谷歌应用程序脚本的范围内对这些“字符串”

给定一个包含“版本号”列的dataTable,如何在该列上对生成的TableChart进行正确排序

以下是表示“版本号”的字母数字字符串示例:

此示例所需的排序顺序为:

"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")