我感兴趣的是编写一个函数,该函数会根据命名列中的值对某些行进行排序。例如,假设我将范围A3:C8命名为Data,将A列(即A:A)命名为Surname,我想根据姓氏对其进行排序。像下面的代码那样做
function sortBySurname() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRangeByName("Data");
range.sort(1);
}
但是,我希望在没有明确使用列Surname是第一个的事实的情况下实现相同的目标,即什么是正确的写法
range.sort("Surname")
代替range.sort(1)
?
答案 0 :(得分:2)
这是将标题名称作为参数接受的函数,并对该标题下的范围进行排序。希望有所帮助。
<强>更新强>
我更新了以下评论的答案
function sortByRangeName(rangeName){
var ss = SpreadsheetApp.getActive();
var namedRange = ss.getRangeByName(rangeName);
var startCol = namedRange.getColumn();
var lastCol = namedRange.getLastColumn();
var dataRange = ss.getRangeByName("Data");
var columnForSorting = (startCol <= dataRange.getLastColumn()) ? startCol : null;
if (namedRange && (startCol == lastCol) && columnForSorting) {
dataRange.sort({column: columnForSorting, ascending: false});
} else {
throw new Error(Utilities.formatString("Range name: %s, startCol: %s, lastCol: %s, columnForSorting: %s", header, startCol, lastCol, columnForSorting));
}
}