Google脚本-表格-排序-如何避免对第一行进行排序?

use*_*028 5 sorting google-sheets google-apps-script

一件让我头疼的蠢事。我相信您会笑,但是如何在不包含排序中第一行的情况下对工作表进行排序?

这是我的代码:

 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test1");
 spreadsheet.sort(4); // or  spreadsheet.sort(4,false); or  spreadsheet.sort(4,true);
Run Code Online (Sandbox Code Playgroud)

这将按 D 列排序,但也会对第一行进行排序。D 列仅包含文本。

有趣的是,如果您对仅包含数字/日期的列进行排序,它会起作用并且确实避免了对第一行进行排序。

那么,如何对包含文本的列进行排序并避免对第一行进行排序?

我知道我可以设置从 A2 开始直到最后一列的范围,但这看起来“混乱”。像这样的东西

spreadsheet.getRange('A2:AI').sort({column: 4, ascending: true});
Run Code Online (Sandbox Code Playgroud)

谢谢

Ale*_*dro 5

这个解决方案怎么样:

冻结标题行,然后执行排序操作。

通过这种方式,可以轻松且可读地选择包含电子表格标题的行,并且您可以使用更清晰的语法应用所有排序操作:

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test1");
spreadsheet.setFrozenRows(1);
spreadsheet.sort(4);
Run Code Online (Sandbox Code Playgroud)

参考

.setFrozenRows()

  • 冻结行并不会将其排除在排序之外 (2认同)

小智 0

您可能也会发现这“混乱”,但也许您可以保存第一项,对列进行排序并插回第一项?

关于日期/数字的工作排序,也许工作表检测到第一个单元格是唯一不同的单元格(不是数字或日期),然后不对其进行排序?