個別に並べ替える必要がある複数の列を含むスプレッドシートがあります。getValues()
以下のスクリプトは機能しますが、各列をとで順番に処理するため、少し遅くなり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
}
注:仕事(2D配列で列をソートする)を行う Romain Vialardによるライブラリがあることは知っていますが、個人的なJSスキルの向上のために「手動で」それを行う方法に興味があります;-)また、すべてをソートする必要があります列ごとにシートを更新する必要はありません。