0

以下のコードを使用して、スプレッドシートをGdriveのフォルダに結合しています。私はシートをどのように組み合わせるかを理解しようとしていますが、どのような順序であるかを知っています。たとえば、SS1、SS2、SS3、SS4という名前のフォルダに4つのファイルがあるとします。どのようにして統一シートの4つのタブがSS1、SS2、SS3、SS4になり、私のコードのようないくつかのランダムな順序ではないことを確認します。例えば、私のコードはSS2、SS1、SS4、SS3のような命令を吐き出すかもしれません。あなたは何ができるかスプレッドシートをマージして新しい文書にタブ順序を設定する方法

function mergeSheets() { 

    /* Retrieve the desired folder */ 
    var myFolder = DriveApp.getFoldersByName(SOURCE).next(); 

    /* Get all spreadsheets that resided on that folder */ 
    var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet"); 

    /* Create the new spreadsheet that you store other sheets */ 
    var newSpreadSheet = SpreadsheetApp.create("Merged Sheets"); 

    /* Iterate over the spreadsheets over the folder */ 
    while(spreadSheets.hasNext()) { 

    var sheet = spreadSheets.next(); 

    /* Open the spreadsheet */ 
    var spreadSheet = SpreadsheetApp.openById(sheet.getId()); 

    /* Get all its sheets */ 
    for(var y in spreadSheet.getSheets()) { 

     /* Copy the sheet to the new merged Spread Sheet */ 
     spreadSheet.getSheets()[y].copyTo(newSpreadSheet); 
    } 
    }  
} 
+0

Google Appsのスクリプトコードにスタックスニペットを追加しないでください。 Stack Fiddleで実行可能なのはJavaScript/HTML/CSSのみです。 –

答えて

0

配列をソートし、最終的に配列にソートされているシートを追加し、その後、アレイ内で抽出されたファイル(あなたのwhileループ)の結果を格納することである(など配列の値が順序付けされます)。

ここで私が考えていたものとvamped再あなたのコード(一部のバグがあるかもしれないので、それをテストしていなかった)

function mergeSheets() { 

    /* Retrieve the desired folder */ 
    var myFolder = DriveApp.getFoldersByName(SOURCE).next(); 

    /* Get all spreadsheets that resided on that folder */ 
    var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet"); 

    /* Create the new spreadsheet that you store other sheets */ 
    var newSpreadSheet = SpreadsheetApp.create("Merged Sheets"); 

    /* Iterate over the spreadsheets over the folder */ 
    var spreadsheetsList = []; 
    while(spreadSheets.hasNext()) { 

    var sheet = spreadSheets.next(); 
    spreadsheetsList.push([sheet.getName(),sheet.getId()]); 
    } 
    spreadsheetsList.sort(function(a,b){return a[0].localCompare(b[0])}); 
    for(var i =0; i< spreadsheetsList.length; i++){ 
    /* Open the spreadsheet */ 
    var spreadSheet = SpreadsheetApp.openById(spreadsheetsList[i][1]); 

    /* Get all its sheets */ 
    for(var y in spreadSheet.getSheets()) { 

     /* Copy the sheet to the new merged Spread Sheet */ 
     spreadSheet.getSheets()[y].copyTo(newSpreadSheet); 
    } 
    }  
} 
関連する問題