2017-02-24 15 views
0

Ich stieß auf eine alte Hilfeformular, wo eine script is shared to organize sheets in einer Tabelle mit Javascript. Das Skript ist wie folgt:Google Sheets Script: Sortieren Sie Blätter alphabetisch in einer Tabelle

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) + "."; 
} 

Nach dem Ausführen des Skripts mehr Seiten in alphabetischer Reihenfolge sortiert zu werden scheinen, aber, nachdem sie durch die sortierten Seiten Scrollen gibt es ein paar, die nicht sortiert worden sind. Die ersten 15 werden sortiert, gefolgt von 21 unsortierten.

enter image description here

Antwort

0

wurde mir klar, dass das Problem von JavaScript .sort() Funktion aktiviert Wörter unterschiedlich behandelt von Klein verwandt war. So modifizierte I:

sheetName = sourceSheets[sheetNumber].getName(); 

sein:

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

Nach dieser Änderung die neue sortierte Tabelle schien alles in Ordnung zu haben.

Verwandte Themen