通过命名列在Google应用脚本中排序

时间:2018-02-03 23:49:19

标签: sorting google-apps-script google-sheets

我感兴趣的是编写一个函数,该函数会根据命名列中的值对某些行进行排序。例如,假设我将范围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)

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

  }


}