我有一个电子表格,其中包含需要单独排序的几列。我在下面编写了有效的脚本,但速度有点慢,因为它依次使用getValues()
and处理每一列setValues()
。我想找到一种方法在数组级别进行整个排序以提高效率,但我不知道如何......有什么建议吗?
这是我现在使用的代码的相关部分:
...
sh3.getRange(1,1,1,newData[0].length).setFontWeight('bold');// newData is an array corresponding to the whole sheet
for(col=1;col<newData[0].length;++col){
var val = sh3.getRange(2,col,getLastRowInCol(col),1).getValues().sort();// each column have a different height
sh3.getRange(2,col,getLastRowInCol(col),1).setValues(val)
}
}
function getLastRowInCol(col){
var values = sh3.getRange(2,col,sh3.getLastRow(),1).getValues();// skip header and find last non empty row in column
for(n=0;n<values.length;++n){
if(values[n]==''){break}
}
return n
}
注意: 我知道Romain Vialard 有一个图书馆可以完成这项工作(对 2D 数组中的列进行排序),但我对如何“手动”提高个人 JS 技能很感兴趣 ;-) 而且我需要对每个列独立,而无需为每一列更新工作表。