Google表格中的自定义排序顺序

时间:2018-01-29 20:23:36

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

我正在尝试根据单个列中的值并使用自定义排序顺序对Google表格电子表格中的一系列数据进行排序。我能够对数据进行排序,但我无法弄清楚如何设置排序的优先级(按字母顺序排列或按字母顺序反向排序)。我想根据下面的顺序排序,但显然我现在只是按字母顺序排序。非常感谢!

  function onEdit() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var editedCell = sheet.getActiveCell();

  //sort based on priority
    var columnToSortBy = 4;
    var tableRange = "A2:Q1000";
    var SortOrder = [
      {name: "Urgent", value:1},
      {name: "High Priority", value:2},
      {name: "Moderate Priority", value:3},
      {name: "No deadline", value:4},
      {name: "Complete", value:5}
    ];

    if(editedCell.getColumn() == columnToSortBy){   
      var range = sheet.getRange(tableRange);
      range.sort( { column : columnToSortBy } );  //this needs to be sorted based on priority level, not 
    }
  }

1 个答案:

答案 0 :(得分:0)

GAS文档似乎没有引用自定义排序顺序。您可以从范围中获取值,通过将自定义比较器功能传递给'排序来对它们进行排序。 Array.prototype的方法,最后用排序数组覆盖范围。

下面的示例假定第一张表中的单个列需要根据" sortBy'设置的优先级进行排序。宾语。

 return sortBy[[b][0]] - sortBy[[a][0]];

这会对升序进行排序 - 反转顺序,更改比较器功能以从下一个中减去当前元素的优先级。

a_cost