gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:47:49 25 4
gpt4 key购买 nike

我正在尝试根据单个列中的值并使用自定义排序顺序对 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
}
}

最佳答案

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

下面的示例假定第一个工作表中有一个列需要根据“sortBy”对象设置的优先级进行排序。

var sheet = SpreadsheetApp.getActive().getSheets()[0];

var range = sheet.getRange(1, 1, sheet.getLastRow(), 1);
var values = range.getValues();

var sortBy = {
"a": 2,
"b": 0,
"c": 4,
"d": 1,
"e": 3
};

values.sort(function(a, b){
return sortBy[[a][0]] - sortBy[[b][0]];
});


range.setValues(values);

这是升序排序 - 要反转顺序,请更改比较器函数以从下一个元素中减去当前元素的优先级。

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

关于javascript - Google 表格中的自定义排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com