如何同步两个 Google Drive 文件夹
Posted
技术标签:
【中文标题】如何同步两个 Google Drive 文件夹【英文标题】:How to Sync Two Google Drive Folder 【发布时间】: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);
【问题讨论】:
【参考方案1】:我已经修改了您的代码,以便:
-
获取目标文件夹中所有文件名的列表。
对于每个要复制的文件,它首先检查该名称是否在上述列表中。如果是,它不会创建它的副本。
修改代码
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);
【讨论】:
以上是关于如何同步两个 Google Drive 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
sh 安装Grive,在Linux VPS上同步文件到Google Drive
如何在 Google Drive Sync 创建的云目录中创建文件夹?