我正在尝试使工作表自动化以根据日期对行进行排序,并在选中复选框时传输行。我弄清楚了传输部分,但是排序功能仅在我要删除的选项卡上起作用,而不在我保留的选项卡上起作用,而且我不明白为什么。
这里有几个可以同时使用的排序功能,但是我需要它们在选项卡上不起作用:
function onEdit(event) {
// assumes source data in sheet named Active
// target sheet of move to named Completed
// getColumn with check-boxes is currently set to colu 8 or H
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
//sort Active by oldest date at the top, using column D or 4
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 4;
var tableRange = "A2:T99"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
并且:
function myFunction()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Active");
var rows = sheet.getLastRow();
var columns = sheet.getLastColumn();
var sortedValues = sheet.getRange(2, 1, rows-1, columns).getValues().sort();
sheet.getRange(2, 1, rows-1, columns).setValues(sortedValues);
}
排序在具有名称的选项卡上起作用,但不适用于称为“活动”和“已完成”的选项卡。借助自动化,我摆脱了命名的标签,而只有“活动”和“完整”。
我已经删除了完整功能上的传输,因为它工作得很好,我只是专注于排序,因为这似乎是个问题。
关于两个标签为何未排序的任何建议? 这是我正在处理的电子表格的副本: https://docs.google.com/spreadsheets/d/17VeCzfqAclxUN-kVIrWZSII-7clsNfttmVVU8s0JhFs/edit?usp=sharing
编辑:由库珀在下面解决。 最终代码可以满足我的需求:
function onEdit(event) {
var sh=SpreadsheetApp.getActive().getSheetByName("Active");
sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending:true});
}
答案 0 :(得分:1)
尝试按第4列进行排序:
function myFunction() {
var sh=SpreadsheetApp.getActive().getSheetByName("Active");
sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending;true});
}