2017-06-04 239 views
0

我有以下表格:排序陣列

| Name | Rating | 
| John | 2000 | 
| Jane | 50  | 
| Bill | 3000 | 
| Sam | 500 | 

我得到的數據以下列方式將電子表格:

mySheet.getDataRange().getValues(); 

我的目標是從打印陣列最高評分到最低評分。我怎樣才能做到這一點?

編輯:我可能應該提及我意識到排序功能:但是,問題有它排序爲一個字符串,而不是一個數字。這意味着60會顯示2000以上,因爲它以6開頭。

+0

使用實用程序格式化爲數字,對它們進行排序然後重新格式化爲字符串? –

+0

什麼讓你不使用電子表格的SORT()函數?它當然可以按數字值排序。 – ttarchala

回答

1

您需要將比較函數傳遞給sort()方法。

function sortDescending() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); 
    var values = range.getValues(); 

    values.sort(function(a, b){ 

    return b[1] - a[1]; //sorts by the 2nd element in a row 


    }); 

    Logger.log(values); 
    } 

請注意,我跳過了標題行,並未將其包含在要排序的值列表中。希望這可以幫助。