首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将目标文件夹名与特定的单个源文件夹名进行比较?

如何将目标文件夹名与特定的单个源文件夹名进行比较?
EN

Stack Overflow用户
提问于 2019-11-07 21:31:41
回答 1查看 87关注 0票数 0

目前,我一直在尝试将文件或文件夹中的文件从最后创建的源文件夹复制到目标文件夹,方法是将文件夹名称与上次创建的文件夹进行比较。现在,我想将源的最后创建日期按文件夹名称与所有目标文件夹进行比较,如果使用相同名称的文件夹退出,则复制数据;否则,使用相同的源文件夹名称创建新文件夹并复制内容。

在StackOverflow社区的帮助下,我能够比较文件夹的最后创建日期和复制内容,但现在我想比较源上一日期创建的文件夹名称和目标的所有文件夹。如果由相同的文件夹退出,则复制其中的数据,否则将创建一个新文件夹。附件是获取最后日期创建文件夹的代码,并与目标文件夹进行比较。

代码语言:javascript
复制
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.
  }  
}

我需要一个源文件夹名称与目标所有文件夹名称的比较,如果匹配,那么只复制内容,否则创建一个新的文件夹和内容。

EN

Stack Overflow用户

发布于 2019-11-08 02:33:28

这对我来说很有效:

代码语言:javascript
复制
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)
      }
    }
  }
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58749843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档