我正在使用Google Apps脚本按D列中的数字对A-C列中的数据进行排序。D列的编号取决于A-C列中的数据(见下文)。
https://docs.google.com/spreadsheets/d/11QSZPAl3nCs7nzpZIR4FzjfkPUyBBut1pD2K0919UB8/edit?usp=sharing
我正在尝试使其顶部(在A6:C6中)顶部有空白行,以便可以输入新数据,然后在排序时将其移至主列表(A7:C299)中并且新的空白行将再次出现在A6:C6中。
我尝试通过将新条目移动到工作表的底部,然后对其进行排序来进行此操作,但是由于某种原因,一旦移动了新条目,便不会对其进行排序。如果删除排序的代码,它可以正确移动,并且如果我只有要排序的代码(在复制粘贴了A6:C6中的数据之后),它也可以工作,但是当组合功能时,它就不会t。有什么想法或其他方法可以做到这一点吗?谢谢!
function SortList() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange("A7:D299");
// Takes values in first row, moves then to end of list and clears contents in first row, then sorts list
var copyrange = sheet.getRange("A6:C6");
var pasterange = sheet.getRange("A298:C298");
var copyvalues = copyrange.getValues();
pasterange.setValues(copyvalues);
copyrange.clearContent();
// Sorts by the values in the first column (A)
range.sort({column: 4, ascending: false});
}
答案 0 :(得分:5)
您可以尝试在两个操作之间添加flush()
方法。
flush()
应用所有待处理的电子表格更改。
电子表格操作有时会捆绑在一起以改善 性能,例如当多次调用Range.getValue()时。 但是,有时您可能需要确保所有待处理的更改 立即制作,例如以脚本形式向用户显示数据 执行。
function SortList() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange("A7:D299");
// Takes values in first row, moves then to end of list and clears contents in first row, then sorts list
var copyrange = sheet.getRange("A6:C6");
var pasterange = sheet.getRange("A298:C298");
var copyvalues = copyrange.getValues();
pasterange.setValues(copyvalues);
copyrange.clearContent();
//Flush
SpreadsheetApp.flush();
// Sorts by the values in the first column (A)
range.sort({column: 4, ascending: false});
}