根据单元格值(GAS)自定义排序顺序

问题描述 投票:0回答:1

目前我通过此功能对工作表进行排序

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(a);
var dataRange = sheet.getDataRange();
dataRange.sort([
  {column: role, ascending: true},
  {column: cases, ascending: false}
]);

这首先按角色按字母顺序排序。是否可以自定义这种排序? 例如,理想情况下,排序是按角色级别而不是按字母顺序排序

例如。如果角色是[实习生、初级、高级、领导、经理],工作表可以按该顺序排序吗?

javascript google-apps-script
1个回答
0
投票

您可以使用

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);
© www.soinside.com 2019 - 2024. All rights reserved.