如何修改Google Apps Script实现按A列降序排序并排除首行
问题
复制粘贴数据后,需要对整个工作表**排除第1行(无需锁定)**按A列降序排序。目前已实现升序排序,现有代码如下:
function CopyData() { var ss = SpreadsheetApp.getActive(); var sh1 = ss.getSheetByName("Auto"); var sh2 = ss.getSheetByName("Test"); var rg1 = sh1.getRange("A2:M10000"); var vA = rg1.getValues().filter(r => r[5]); sh2.getRange(sh2.getLastRow() + 1, 1, vA.length, vA[0].length).setValues(vA); ss.getSheetByName("Test").sort(1); }
请问如何修改代码实现按A列降序排序,且无需锁定首行即可排除其参与排序?
解决方案
只需修改排序逻辑部分,替换原有简单的sort(1),改为指定排序范围和降序参数的写法即可:
修改后的完整代码:
function CopyData() { var ss = SpreadsheetApp.getActive(); var sh1 = ss.getSheetByName("Auto"); var sh2 = ss.getSheetByName("Test"); var rg1 = sh1.getRange("A2:M10000"); var vA = rg1.getValues().filter(r => r[5]); sh2.getRange(sh2.getLastRow() + 1, 1, vA.length, vA[0].length).setValues(vA); // 核心修改:选中第2行到最后一行的全部数据,按A列降序排序 var targetRange = sh2.getRange(2, 1, sh2.getLastRow() - 1, sh2.getLastColumn()); targetRange.sort({column: 1, ascending: false}); }
关键说明:
sh2.getRange(2, 1, sh2.getLastRow() - 1, sh2.getLastColumn()):直接锁定从第2行开始到最后一行的所有列,天然排除了首行,无需额外锁定操作。sort({column: 1, ascending: false}):明确指定按第1列(A列)排序,ascending: false参数实现降序效果。
内容的提问来源于stack exchange,提问作者Michał Dziedzic
相关产品推荐
相关产品推荐

