How to make multiple copies of a Google folder

I prefer to abstain from allowing third parties access to my Drive unless I have to so, like Lucky 711, I wrote my own script. I leave it here for future Google results adventurers. It will copy the folder and all its contents. For my use case, I wrote it to handle files with multiple parents by just adding the copied folder as a new parent. If you don't want that, drop the "Count the parents that aren't this parent" part.

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) { var folderToCopy = DriveApp.getFolderById(folderToCopyId); var newParentFolder = DriveApp.getFolderById(newParentFolderId); // Create the copy of the folder var newFolder = newParentFolder.createFolder(newFolderName); // Copy all the files in that folder var files = folderToCopy.getFiles(); while (files.hasNext()) { var file = files.next(); // Count the parents that aren't this parent var countOfOtherParents = 0; var parents = file.getParents(); while (parents.hasNext()) { var parent = parents.next(); if (parent.getId() !== folderToCopyId) { countOfOtherParents++; } } // If it's unique, then copy it. Otherwise, just add it to the new parent. if (countOfOtherParents == 0) { file.makeCopy(file.getName(),newFolder); } else { newFolder.addFile(file); } } // Copy all the subfolders in that folder var folders = folderToCopy.getFolders(); while (folders.hasNext()) { var folder = folders.next(); copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName()); } }

For reference, if you want to create new copies of files with multiple parents rather than just adding the new folder as another parent, the shorter code would look like this:

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) { var folderToCopy = DriveApp.getFolderById(folderToCopyId); var newParentFolder = DriveApp.getFolderById(newParentFolderId); // Create the copy of the folder var newFolder = newParentFolder.createFolder(newFolderName); // Copy all the files in that folder var files = folderToCopy.getFiles(); while (files.hasNext()) { var file = files.next(); file.makeCopy(file.getName(),newFolder); } // Copy all the subfolders in that folder var folders = folderToCopy.getFolders(); while (folders.hasNext()) { var folder = folders.next(); copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName()); } }

Video

Postingan terbaru

LIHAT SEMUA