我正在尝试根据单个列中的值并使用自定义排序顺序对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
}
}
答案 0 :(得分:0)
GAS文档似乎没有引用自定义排序顺序。您可以从范围中获取值,通过将自定义比较器功能传递给'排序来对它们进行排序。 Array.prototype的方法,最后用排序数组覆盖范围。
下面的示例假定第一张表中的单个列需要根据" sortBy'设置的优先级进行排序。宾语。
return sortBy[[b][0]] - sortBy[[a][0]];
这会对升序进行排序 - 反转顺序,更改比较器功能以从下一个中减去当前元素的优先级。
a_cost