我的问题是,当我标记为“完成”时,数据已通过脚本从一张工作表移到另一张工作表。我要在“已完成”表中对数据进行排序。我已经有一个自动排序脚本,该脚本仅在调试时才起作用,甚至在编辑时也不起作用(在任何地方都尝试编辑),更不用说将数据移动到工作表时了。
我希望每当数据移动到新工作表时都可以自动排序(我不认为它的onEdit功能是这样)
我不是程序员,并且对Google Apps脚本还很陌生。我偶尔会涉足代码,因为我发现它很有趣,所以我什至不知道从哪里开始获得我想要的结果。
这是自动排序,
function AutoSortOnEdit() {
var sheetNames = ["Complete"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheetNames.forEach(function(name) {
var sheet = ss.getSheetByName(name);
var range = sheet.getRange(4, 1, sheet.getLastRow() - 1,
sheet.getLastColumn());
range.sort({column: 2, ascending: true});
});
}
编辑:我意识到我正在为多个工作表使用脚本。我将其更改为一张纸,尽管有相同的问题。
function AutoSortOnEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Completed Returns");
var range = sheet.getRange(4, 1, sheet.getLastRow() - 1,
sheet.getLastColumn());
range.sort({column: 2, ascending: true});
}
任何帮助将不胜感激!
答案 0 :(得分:1)
我设法通过将2个脚本放到1个函数下来使其正常工作,如下所示。我不知道如何在调用多个函数的同时使事件函数运行,所以我只是将它们组合在一起。在两个“}”括号的上方是移动脚本,在其下方是“自动”排序。
function onEdit(e) {
var ss = e.source;
var s = ss.getActiveSheet();
var r = e.range;
var actionCol = 24;
var nameCol = 24;
var rowIndex = r.getRowIndex();
var colIndex = r.getColumnIndex();
var colNumber = s.getLastColumn();
if (e.value == "TRUE" && colIndex == actionCol) {
var targetSheet = ss.getSheetByName("Completed Returns");
if (ss.getSheetByName("Completed Returns")) {
var targetSheet = ss.getSheetByName("Completed Returns");
var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber);
var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
sourceRange.copyTo(targetRange);
s.deleteRow(rowIndex);
}
}
var sheet = ss.getSheetByName("Completed Returns");
var range = sheet.getRange(4, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
range.sort({column: 2, ascending: true});
}
感谢大家的回应!
答案 1 :(得分:0)
您可以彼此添加功能
function AutoSortOnEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Completed Returns');
var range = sheet.getRange(
4,
1,
sheet.getLastRow() - 1,
sheet.getLastColumn()
);
range.sort({ column: 2, ascending: true });
}
function copyData() {}
function userActionRun() {
copyData();
AutoSortOnEdit();
}
现在您可以将其绑定到EDIT事件
function onEdit(){
userActionRun();
}
答案 2 :(得分:0)
您可以使用Click here函数对数据集进行排序。
如果具有将行标记为已完成时将数据从一张纸移到另一张纸的功能,则可以在该行的末尾添加一行以对其进行排序。
您还可以创建一个Sort
,根据您的参数对整个工作表进行排序。与过滤器不同,FilterViews在会话之间保存。