Как сравнить имена папок назначения с определенным именем папки с одним источником? - PullRequest
0 голосов
/ 07 ноября 2019

В настоящее время я пытаюсь скопировать файлы или папку с файлами из последней созданной исходной папки в целевую папку, сравнивая имя папки на основе последней созданной даты. Теперь я хочу сравнить последнюю созданную исходную папку источника по имени со всеми целевыми папками, если папка с тем же именем выходит, чем копировать данные, иначе создайте новую папку с тем же именем источника и скопируйте содержимое.

С помощью сообщества StackOverflow я могу сравнивать папки на основе последней созданной даты и копировать содержимое, но теперь я хочу сравнить исходную последнюю дату, созданную foldername, со всей папкой назначения. Если папка тем же выходит, чем копирует данные в нее, иначе она создает новую папкуПрикреплен код для получения последней даты создания папки и сравнения с целевой папкой.

var destSubFolders = destLastFolder.getFolders();   
var destSubArray=[];   
while(destSubFolders.hasNext()) {     
  var destSubfolder = destSubFolders.next(); 
  destSubArray.push({
    value: destSubfolder.getDateCreated().valueOf(), 
    sourceFolderId: destSubfolder.getId()
  }); 
}   
destSubArray.sort(function(a,b){return b.value-a.value;}); // Comparing between the date created and extracts the last created folder.    
var destLastSubFolder=DriveApp.getFolderById(destSubArray[0].sourceFolderId);// gets the last created sub folder by id.  
var destinationLastSubFolderFiles= destLastSubFolder.getFiles();//get files of the last created subfolder. 
var d_SubName = destLastSubFolder.getName(); // get name of the last created subfolder.  
if(s_SubName == d_SubName ) { //condition for comapring source and destination last created subfolder names.
  var dfnA=[]; // getting files from source sub folder and copying into destination folder.   
  while(destinationLastSubFolderFiles.hasNext()) {
    var dF=destinationLastSubFolderFiles.next();    
    dfnA.push(dF.getName());    
  }
  while(sourceLastSubFolderFiles.hasNext()) {    
    var sF=sourceLastSubFolderFiles.next();    
    if(dfnA.indexOf(sF.getName())==-1) {      
      sF.makeCopy(sF.getName(),destLastSubFolder); // copying files after comparing by names.
    }
  }
} else { //creates new folder by source subfolder name and copies data into new created folder.    
  var sNewName = lastSubFolder.getName();    
  var dFolderName=destLastFolder.createFolder(sNewName);    
  while(sourceLastSubFolderFiles.hasNext()) {       
    var sFilesIterator=sourceLastSubFolderFiles.next();    
    sFilesIterator.makeCopy(sFilesIterator.getName(),dFolderName); // copying files after comparing by names.
  }  
}

Мне нужно сравнить имя исходной папки с целевым именем всех папок и, если совпадения, копировать только содержимое, создать новую папку и содержимое.

1 Ответ

0 голосов
/ 07 ноября 2019

Это работает для меня:

function findSubFolderWithLastDate(startingFolderId) {
  var startingFolderId=startingFolderId||'defaultId';
  var startFolder=DriveApp.getFolderById(startingFolderId);
  var srcFldrs=startFolder.getFolders();
  var fldrA=[];
  while(srcFldrs.hasNext()) {
    var srcFldr=srcFldrs.next();
    fldrA.push({value:srcFldr.getLastUpdated().valueOf(),id:srcFldr.getId(),name:srcFldr.getName()})
  }
  return fldrA.sort(function(a,b){return(b.value-a.value);})[0].id;
}

function copyingFilesFromSourceToDestinationFolderWithSameName(srcfldrId,desfldrId) {
  var desFldr=DriveApp.getFolderById(desfldrId);
  var srcFldr=DriveApp.getFolderById(srcfldrId);
  var srcSubFldrs=srcFldr.getFolders();
  while(srcSubFldrs.hasNext()) {
    var srcSubFldrFound=false;
    var srcSubFldr=srcSubFldrs.next();
    var desSubFldrs=desFldr.getFolders();
    while(desSubFldrs.hasNext()) {
      var desSubFldr=desSubFldrs.next();
      if(desSubFldr.getName()==srcSubFldr.getName()) {
        srcSubFldrFound=true;
        var files=srcSubFldr.getFiles();
        while(files.hasNext()) {
          var file=files.next();
          file.makeCopy(file.getName(),desSubFldr);
        }
        break;
      } 
    }
    if(!srcSubFldrFound) {
      var newFldr=desFldr.createFolder(srcSubFldr.getName());
      var files=srcSubFldr.getFiles();
      while(files.hasNext()) {
        var file=files.next();
        file.makeCopy(file.getName(),newFldr)
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...