Skip to content

Instantly share code, notes, and snippets.

@segnolin
Created June 22, 2020 02:16
Show Gist options
  • Save segnolin/cc05ac1bb8c461d49dde00b6a026188f to your computer and use it in GitHub Desktop.
Save segnolin/cc05ac1bb8c461d49dde00b6a026188f to your computer and use it in GitHub Desktop.
function entry() {
Logger.clear();
backup('the folder you want to copy');
}
function backup(name) {
var sourceFolder = name;
var targetFolder = name + '-bak';
var source = DriveApp.getFoldersByName(sourceFolder);
if (source.hasNext()) {
var target = DriveApp.getFoldersByName(targetFolder);
if (target.hasNext()) {
target = target.next();
}
else {
target = DriveApp.createFolder(targetFolder);
}
copyFolder(source.next(), target);
}
}
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
while (folders.hasNext()) {
var folder = folders.next();
var folderName = folder.getName();
var log = folderName;
var targetFolder = target.getFoldersByName(folderName);
if (targetFolder.hasNext()) {
targetFolder = targetFolder.next();
}
else {
targetFolder = target.createFolder(folderName);
log = '### FOLDER MAKE COPY ### ' + log;
Logger.log(log);
}
copyFolder(folder, targetFolder);
}
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var log = fileName;
if (!target.getFilesByName(fileName).hasNext()) {
file.makeCopy(fileName, target);
log = '### FILE MAKE COPY ### ' + log;
Logger.log(log);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment