Make a Copy of Folders in Google Drive with Google Scripts

In Google Drive, there’s no easy way to clone a folder. You can make a copy of individual files but there’s no command for creating duplicate folders that are a mirror of another folder. Fortunately, there’s Google Script to the rescue. The only downside is that the script execution may time out if you are trying to copy a large folder with several sub-folders and files.

function start() {
  
  var sourceFolder = "source";
  var targetFolder = "target";
  
  var source = DriveApp.getFoldersByName(sourceFolder);
  var target = DriveApp.createFolder(targetFolder);

  if (source.hasNext()) {
    copyFolder(source.next(), 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);
  }  
  
}