[英]Google apps script to copy all data from a folder to another folder and prevent script copy files that already exist
我的 Google Drive 帐户中有两个文件夹; 假设文件夹 1 和文件夹 2。我会将文件夹 1 中的所有文件和文件夹复制到文件夹 2,但如果文件夹 2 中已经存在,则不应复制。 这是脚本,但是当它运行时,它总是将文件夹 1 中的所有可用数据复制到文件夹 2:
function copyTo() {
var sourceFolder = "id1";
var targetFolder = "id2";
var source = DriveApp.getFolderById(sourceFolder);
var target = DriveApp.getFolderById(targetFolder);
copyFolder(source, target);
}
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
while(files.hasNext()){
var file = files.next();
file.makeCopy(file.getName(), target);
}
while(folders.hasNext()){
var subFolder = folders.next();
var folderName = subFolder.getName();
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);
}
}
您需要在目标文件夹中创建文件和文件夹列表,并根据列表检查要复制的文件的名称。
function copyTo() {
var sourceFolder = "id1";
var targetFolder = "id2";
var source = DriveApp.getFolderById(sourceFolder);
var target = DriveApp.getFolderById(targetFolder);
copyFolder(source, target);
}
function copyFolder(source, target) {
var folderNames = existingFiles(target);
var folders = source.getFolders();
var files = source.getFiles();
while (files.hasNext()) {
var file = files.next();
if (folderNames.files.indexOf(file.getName()) > -1) {
file.makeCopy(file.getName(), target);
}
}
while (folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
if (folderNames.files.indexOf(folderName) > -1)
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);
}
}
function existingFiles(folder) {
var names = {
files: [],
folders: []
};
var folders = folder.getFolders();
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
names.files.push(file.getName());
}
while (folders.hasNext()) {
var subFolder = folders.next();
name.folder.push(subFolder.getName());
}
return names;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.