我在跟踪器中使用了2个函数。 1函数用于在编辑该列中的单元格时自动按日期(最早的第一个)对列C进行排序。如果“完成”这个词。或者' void'键入该单元格,然后将整行复制到下一个工作表上。
但是我的问题是,当我输入' done'或者' void'在这个单元格中,Google工作表正在对列表进行排序,并处理移动功能,从而移动错误的行(生成的行号,排序后)。我该如何修复或改进代码。
function movedonevoid(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var value = r.getValue();
if(s.getName() == "tracker" && r.getColumn() == 3 && (value=="done" || value=="void" )) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("tracker2");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
和
function sorttracker(event){
var sheet = event.source.getActiveSheet();
if(sheet.getName() == 'tracker'){
var editedCell = sheet.getActiveCell();
var columnToSortBy = 3;
var tableRange = "A2:D"; // What to sort.
if(editedCell.getColumn() == columnToSortBy) {
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
}
我已将上述2位代码作为2个不同的脚本插入,然后在编辑'上使用项目触发器。不确定这是否是最佳方法?
答案 0 :(得分:1)
正如您已经注意到的那样,让两个不同的函数在同一范围内运行并被两个不同的onEdit触发器调用并不是一个好主意。
不使用两个onEdit触发器,只使用一个调用orchestral conductor函数来调用原来的两个。{3}}函数。 orchestral conductor function
可能类似于以下内容:
function onEdit(e) {
movedonevoid(e);
sorttracker(e);
}