2017-02-24 123 views
0

我遇到了一个旧的帮助窗体,其中一个电子表格中的script is shared to organize sheets使用javascript。该脚本如下:Google表格脚本:在电子表格中按字母顺序排序表

function copyAllSheetsToAnotherSpreadsheetInAlphabeticalOrder() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sourceName = ss.getName(); 
    var sourceSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); 
    var targetName = "Sheets alphabetized - Copy of " + sourceName; 
    var sheetNumber, sourceSheet, sheetName; 
    var sheetAlphaArray = new Array(); 

    // create a new empty target spreadsheet 
    var targetSpreadsheet = SpreadsheetApp.create(targetName); 
    var targetUrl = targetSpreadsheet.getUrl(); 

    // iterate through all sheets in the source spreadsheet to collect their names and numbers 
    for(sheetNumber = 0; sheetNumber < sourceSheets.length; sheetNumber++) { 
    sheetAlphaArray[sheetNumber] = new Array(2); 
    sheetName = sourceSheets[sheetNumber].getName(); 
    // we will sort the array by the sheet name so it needs to be the first element 
    sheetAlphaArray[sheetNumber][0] = sheetName; 
    // need to keep track of sheet numbers so that we can find the sheets 
    // in alphabetical order from the sourceSheets array, place it in the second element 
    sheetAlphaArray[sheetNumber][1] = sheetNumber; 
    } 

    // sort the sheet names array in ascending alphabetic order 
    sheetAlphaArray.sort(); 

    // iterate through all sheets in the source spreadsheet by sheet name in alphabetic order 
    // 
    // new sheets are always added to the first position, so the sheets need to be added 
    // last sheet first, first sheet last, otherwise they would appear in reverse order 
    for(sheetNumber = sourceSheets.length - 1; sheetNumber >= 0; sheetNumber--) { 

    // copy next sheet in reverse alphabetical order from the source spreadsheet to target spreadsheet 
    sourceSheet = sourceSheets[ (sheetAlphaArray[sheetNumber][1]) ]; 
    sourceSheet.copyTo(targetSpreadsheet); 
    } 

    // done, tell user where to find the new spreadsheet 
    Browser.msgBox("Spreadsheet copied with sheets in alphabetical order. " + 
       "Target name: " + targetName + ". " + 
       "Target URL: " + targetUrl) + "."; 
} 

运行脚本后几页似乎按照字母顺序进行排序,而是通过分类页面滚动之后还有哪些没有被排序的一群。前15个排序,然后是21个未排序。

enter image description here

回答

0

我意识到这个问题是关系到JavaScript的.sort()功能从小写治疗大写单词不同。所以我修改:

sheetName = sourceSheets[sheetNumber].getName(); 

是:

sheetName = sourceSheets[sheetNumber].getName().toLowerCase(); 

使这一变化的新的电子表格排序似乎在为了一切之后。