目前我通过此功能对工作表进行排序
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(a);
var dataRange = sheet.getDataRange();
dataRange.sort([
{column: role, ascending: true},
{column: cases, ascending: false}
]);
这首先按角色按字母顺序排序。是否可以自定义这种排序? 例如,理想情况下,排序是按角色级别而不是按字母顺序排序
例如。如果角色是[实习生、初级、高级、领导、经理],工作表可以按该顺序排序吗?
您可以使用
Map
对象为每个角色分配一个数值,并根据这些值进行排序。希望这能按预期工作。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(a);
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
var roleOrder = {
'intern': 1,
'junior': 2,
'senior': 3,
'lead': 4,
'manager': 5
};
data.sort(function(row1, row2) {
var role1 = row1[role - 1];
var role2 = row2[role - 1];
if (roleOrder[role1] < roleOrder[role2]) {
return -1;
} else if (roleOrder[role1] > roleOrder[role2]) {
return 1;
} else {
return row2[cases - 1] - row1[cases - 1];
}
});
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);