Google Script to copy from each sheet in folder to

2019-08-04 13:19发布

I have a folder named "TEST FOLDER" I have two spreadsheets, TEST1 AND TEST2, I also have a spreadsheet called MASTER. I want to have a script in the MASTER Spreadsheet which will work on a Trigger to run once a day. It will run through any SPREADSHEET within "TEST FOLDER" and copy all new rows into the MASTER SHEET. I will put "Copied" in a column to have a value to check to make sure no rows are copied twice.

   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();
    }
   }
 }

Here is my code so far. I

1条回答
Rolldiameter
2楼-- · 2019-08-04 14:06

I change a bit the code and this one must work. Please adapt depending your file structure

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();
        }
      }
    } 
  }
}

Stéphane

查看更多
登录 后发表回答