2017-02-24 126 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(); 

使這一變化的新的電子表格排序似乎在爲了一切之後。