在 Apps 脚本中按时间升序排序

问题描述 投票:0回答:1

我有一个 Google 表格文档,其中从第三行开始包含以下信息:A 列中的名称、B 列中的时间和 C 列中的组。我试图按时间升序对所有这些信息进行排序,但遇到了一个问题。我遇到的问题是,当时间中有冒号时,有时无法正确排序。例如,10:05.63 放在 9:49.28 之前。

这是我到目前为止所拥有的:

   // Getting the range to sort (from A3 to the end of the used range)
   var range = sheet.getRange(3, 1, sheet.getLastRow() - 2, sheet.getLastColumn());
      
   // Sorting the range ascending by column B
   range.sort({column: 2, ascending: true});

例如,输入:

name one     |9:49.28     |group1
name two     |10:05.63    |group2
name three   |9:52.57     |group3

应替换为:

name one     |9:49.28     |group1
name three   |9:52.57     |group3
name two     |10:05.63    |group2
javascript google-sheets google-apps-script
1个回答
0
投票

您引用的

9:49.28
之类的值很可能不是数字持续时间,而是看起来像持续时间的文本字符串。文本字符串按字典顺序排序,其中“
10
”位于“
9
”之前。

要使其发挥作用:

  1. 文件 > 设置 > 区域设置设置为与您要使用的持续时间格式匹配的区域设置。
  2. 编辑值,使其采用适用于您指定的区域设置的持续时间格式。您可以通过查看单元格对齐来判断格式是否正确:文本字符串默认向左对齐,而数字持续时间默认向右对齐。
  3. 将生成的数字持续时间格式化为格式 > 数字 > 持续时间或您选择的自定义格式。

查看这些资源:

© www.soinside.com 2019 - 2024. All rights reserved.