不要复制目标文件夹中的现有文件

时间:2019-10-17 09:50:27

标签: google-apps-script

我一直在尝试使用Google App脚本将内容从一个文件夹复制到google驱动器中的另一个文件夹。借助一些在线帮助和google脚本文档,我能够将文件从一个文件夹复制到另一个文件夹,但它会在触发时将所有文件从源文件夹复制到目标文件夹,但是我只希望将新文件复制到目标文件夹中并跳过我的源文件夹和目标文件夹中已经存在的文件。

我试图在复制之前按名称检查文件,但是找不到在gdrive的两个不同文件夹中按名称比较文件的方法。

function CopyFiles() {

  var SourceFolder = DriveApp.getFolderById('Sid');

  var SourceFiles = DriveApp.getFolderById('Sid').getFiles();

  var DestFolder = DriveApp.getFolderById('Did');

   var DestFiles = DriveApp.getFolderById('Did').getFiles();

  while (SourceFiles.hasNext())  
  {
    var files = SourceFiles.next();

    var dfiles = DestFiles.next();

     if ( files == dfiles){

    file.setTrashed(true);}

   else{

      var f = files.makeCopy(DestFolder);

    }

  }
}

我要实现的是脚本比较目标文件夹中名称的文件,如果已经存在该名称的文件而不是其他文件,请在目标文件夹中创建该新文件的副本。

1 个答案:

答案 0 :(得分:1)

如果目标确实具有相同的文件名,则将文件从源复制到目标

在此版本中,没有文件被丢弃。

function CopyFiles() {
  var srcFldr=DriveApp.getFolderById('srcId');
  var srcFiles=srcFldr.getFiles();
  var desFldr=DriveApp.getFolderById('desId');
  var desFiles=desFldr.getFiles();
  var dfnA=[];
  while(desFiles.hasNext()) {
    var df=desFiles.next();
    dfnA.push(df.getName());
  }
  while(srcFiles.hasNext()) {
    var sf=srcFiles.next();
    if(dfnA.indexOf(sf.getName())==-1) {
      sf.makeCopy(sf.getName(),desFldr);
    }
  }
}