2015-09-14 63 views
0

我有一個名爲「TEST FOLDER」的文件夾我有兩個電子表格,TEST1和TEST2,我也有一個名爲MASTER的電子表格。我想在MASTER Spreadsheet中有一個腳本,它將在觸發器上工作,每天運行一次。它將通過「TEST FOLDER」中的任意SPREADSHEET並將所有新行復制到MASTER SHEET中。我將把「Copied」放在一列中,以確保沒有行被複制兩次。谷歌腳本從文件夾中的每張紙複製到基於文件夾的主紙張?

var folder = DocsList.getFolder("TEST FOLDER"); 
    var contents = folder.getFiles(); 
    var file; 
    var data; 

    for (var i = 0; i < contents.length; i++) { file = contents[i]; 
    if (file.getFileType() == "SPREADSHEET") { 
    continue; 
}            
    var s = SpreadsheetApp.getActiveSpreadsheet(); 
    var startRow = 2; 
    var numRows = sheet.getLastRow(); 
    var dataRange = sheet.getRange(startRow, 1, numRows, 6); 
    var data = dataRange.getValues(); 
    var copied = row[5]; //copied indicator cell 

    if(copied != "Copied") 
    { 
    var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MASTER"); 
    var targetSheet = target.getRange(rowIndex, nameCol).getValue(); 
    if (target.getSheetByName(targetSheet)) { 
     // set our target sheet and target range 
     var targetSheet = ss.getSheetByName(targetSheet); 
     var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, colNumber); 
     var sourceRange = s.getRange(rowIndex, 1, 1, colNumber); 
     sourceRange.copyTo(targetRange); 
     sheet.getRange(startRow + i, 6).setValue("Copied"); 
     SpreadsheetApp.flush(); 
    } 
    } 
} 

這是我的代碼到目前爲止。我

回答

1

我改變了一下代碼,這一個必須工作。這取決於你的文件結構

function getDataToMaster() { 
    var folder = DriveApp.getFolderById("IdOfFolder"); //Define id of folder 
    var contents = folder.getFiles(); 
    var file; 
    var data; 
    var sheetMaster = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; //first sheet of the file, change by getSheetByName("NAME") if you want 
    while(contents.hasNext()){ 
    file = contents.next(); 
    if (file.getMimeType() == "application/vnd.google-apps.spreadsheet") { 
     var sheet = SpreadsheetApp.openById(file.getId()).getSheets()[0];//first sheet of the file, change by getSheetByName("NAME") if you want 
     var startRow = 2; 
     var data = sheet.getDataRange().getValues(); 
     var colToCheck = 6; 
     for(var j = 1; j < data.length;j++){ 
     if(data[j][colToCheck-1] != "copied"){ 
      sheetMaster.appendRow(data[j]); 
      sheet.getRange((j+1), colToCheck).setValue("copied"); 
      SpreadsheetApp.flush(); 
     } 
     } 
    } 
    } 
} 

斯特凡

+0

真棒請適應。這就是我所需要的。 – user3911976

+0

我注意到它複製行後,它將複製到單元格中。它會因爲某種原因複製一個重複的行,這樣你會看到兩組相同的行。 – user3911976

+0

在我的測試不是,這是奇怪的mays檢查源表,以確保沒有重複。 – St3ph

相關問題