簡體   English   中英

Google Script可以從文件夾中的每個工作表復制到基於文件夾的主工作表嗎?

[英]Google Script to copy from each sheet in folder to a master sheet in folder based?

我有一個名為“ TEST FOLDER”的文件夾,我有兩個電子表格,TEST1和TEST2,還有一個電子表格,稱為MASTER。 我想在MASTER Spreadsheet中有一個腳本,該腳本可以在每天運行一次的Trigger上工作。 它將在“ TEST FOLDER”中的任何SPREADSHEET中運行,並將所有新行復制到MASTER SHEET中。 我將“復制”放在一列中以檢查一個值,以確保沒有行被復制兩次。

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

到目前為止,這是我的代碼。 一世

我更改了一些代碼,此代碼必須正常工作。 請根據您的文件結構進行調整

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

斯特凡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM