Created
September 4, 2016 18:40
-
-
Save qgustavor/6a1b6ab701f73a4cdec2e2b491babb33 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// In case of "Exceeded maximum execution time" retry after some time | |
// Copied files and folders will not be copied again | |
// Changes: | |
// - Don't "search" for source and target folders | |
// - Inline some variables (to make it run faster) | |
// - Avoid Logger when possible (it can make script slower) | |
function start() { | |
var source = DriveApp.getFolderById('get-source-folder-id-in-link'); | |
var target = DriveApp.getFolderById('get-target-folder-id-in-link'); | |
copyFolder(source, target); | |
} | |
function copyFolder(source, target) { | |
var files = source.getFiles(); | |
while (files.hasNext()) { | |
var file = files.next(); | |
var fileName = file.getName(); | |
if (!target.getFilesByName(fileName).hasNext()) { | |
// Only copy if not exists | |
try { | |
file.makeCopy(fileName, target); | |
} catch(e) { | |
// Some files can't be copied, log them: | |
Logger.log('Copy failed for ' + fileName); | |
} | |
} | |
} | |
var folders = source.getFolders(); | |
while (folders.hasNext()) { | |
var subFolder = folders.next(); | |
var folderName = subFolder.getName(); | |
var existentFolder = target.getFoldersByName(folderName); | |
// Only create folder if not exists | |
var targetFolder = existentFolder.hasNext() ? | |
existentFolder.next() : target.createFolder(folderName); | |
copyFolder(subFolder, targetFolder); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment