Как синхронизировать две папки Google Drive - PullRequest
1 голос
/ 15 октября 2019

У меня есть две папки в моей учетной записи Google Drive;Folder 1 и Folder 2. Я буду загружать файл в Folder 1, и я хочу, чтобы файл копировался из Folder 1 в Folder 2, но если он уже существует в Folder 2, его не следует копировать. Вот скрипт, который у меня есть, но при запуске он всегда копирует все файлы, доступные в Folder 1, в Folder 2:

function copyfile() {
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var files = source_folder.getFiles();
  var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
  while (files.hasNext()) {
    var srcFile = files.next();
    var newName = srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}

1 Ответ

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

Я изменил ваш код так, что:

  1. Получает список всех имен файлов в папке назначения.
  2. Для каждого файла, который нужно скопировать, сначала проверяется,имя в указанном списке. В таком случае он не будет создавать его копию.

Модифицированный код

function copyfile() {
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var files = source_folder.getFiles();
  var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();

  var destination_files = [];
  var fileIterator = dest_folder.getFiles()
  while (fileIterator.hasNext())
    destination_files.push(fileIterator.next().getName());

  while (files.hasNext()) {
    var srcFile = files.next();
    var newName = srcFile.getName();
    if (destination_files.indexOf(newName) == -1) {
      srcFile.makeCopy(dest_folder);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...