0
votes

I'm trying to automate my duplicating folder process in google drive. As part of the process, I want to rename files and folders for each new client.

I've adapted some code found previously. It was previously working well, but for some reason now any folders/files that are more than 1 level deep of the root folder come back "undefined" in the replace section of the command.

function duplicatefolder(){

  var newclientname = Browser.inputBox('Client Name')
   var sourceFolder = "1. Master Client Folder";
  var targetFolder = newclientname;

  var source = DriveApp.getFoldersByName(sourceFolder);
  var target = DriveApp.createFolder(targetFolder);

  if (source.hasNext()) {
    copyFolder(source.next(), target, newclientname);
  }
}


function copyFolder(source, target,client) {

  var folders = source.getFolders();
  var files   = source.getFiles();

  while(files.hasNext()) {
    var file = files.next();
    var newname= file.getName().toString().replace("Master",client)
        file.makeCopy(newname, target);
  }

  while(folders.hasNext()) {
    var subFolder = folders.next();
    var folderName = subFolder.getName();
    var newFolderName = subFolder.getName().replace("Master",client)
    var targetFolder = target.createFolder(newFolderName);
    copyFolder(subFolder, targetFolder);
  }  

}

The script also creates the folder in the root directory of google drive. Ideally, I'd like it to be created inside the folder "Clients". How would I add this to the script?

Appreciate the help.

Cheers

1

1 Answers