2017-06-04 175 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); 
    } 

请注意,我跳过了标题行,并未将其包含在要排序的值列表中。希望这可以帮助。