Google脚本排序问题排查(可作为2个功能,但不能组合使用)

时间:2018-11-13 13:45:06

标签: sorting google-apps-script google-sheets

我正在使用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});

}

1 个答案:

答案 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});

}