【问题标题】:How to Sync Two Google Drive Folder如何同步两个 Google Drive 文件夹
【发布时间】:2020-02-11 22:59:41
【问题描述】:

我的 Google 云端硬盘帐户中有两个文件夹; 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);
  }
}

【问题讨论】:

    标签: google-apps-script copy


    【解决方案1】:

    我已经修改了您的代码,以便:

    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);
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      相关资源
      最近更新 更多