Не копируйте существующий файл в папку назначения - PullRequest
1 голос
/ 17 октября 2019

Я пытался скопировать содержимое из одной папки в другую папку на диске Google с помощью скрипта приложения 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);

    }

  }
}

Чего я хочу добиться, так это чтобы Script сравнивал файлы по имени в папке назначения, и если файлы с таким именем уже существуют, чем пропуск, создайте копию этого нового файла в папке назначения.

1 Ответ

1 голос
/ 17 октября 2019

Копирует файлы из источника в место назначения, если у места назначения одинаковые имена файлов

В этой версии файлы не удаляются.

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);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...