Implement a folder move function in Google Dirve -


i new writing types of scripts , trying write google apps script search through folders particular string, , if found move folder folder.

i can copy folder, not move since copied folder has same id original, , deleting 1 deletes other. have been able figure out can implement deleting right child folder. i've tried in apis explorer , expect.

the problem can't life of me figure out how implement example given in google drive sdk page in script.google.com. if paste in example code missing name after . operator error. none of scripting commands let me delete child.

likely simple issue , arises trying learn javascript doing project, appreciate or advice on how implement move function in google script.

the specific question is: how implement move folder script? trying, removes both folders:

while (contents.hasnext()) {   folder = contents.next();   name = folder.getname();   if (name.search("xyz") != -1) {     movefolder = folder;     targetfolder.addfolder(movefolder) movefolder.setname('del_' +       movefolder.getname());     removefolder(movefolder);   } } 

first, let's clear confusion. 2 drive-related "services" provided use within google apps script, drive services, and docslist services. documentation you've referenced google drive sdk, not same thing. if you're programming in google apps script, ignore sdk documentation.

next, let's talk folder or file is on drive, , how affects concepts of "copy", "move" , "delete". file or folder may have folder parent. in fact, may have multiple parents. if want have same file or folder "copied" folder, add child target folder. @ point, may have 2 items same id - have 1 item 2 parents. if remove file or folder original folder (disown it, in way), left 1 parent, , appear "move". file or folder not have been "deleted". on other hand, if instead of removing parent / child relationship, do delete file or folder, appear have "deleted both folders", have described.

so, "move" script needs add new parent / child relationship, , remove other.

the drive starter script presented when open new script in editor contains function called movefiletofolder().

screenshot

this function looking for, except thing it's moving file. however, methods used file have cousins folders, can replacement end movefoldertofolder():

/**  * script moves specific folder given folder, , removes folder  * other folders contained it. more information on  * interacting files, see  * https://developers.google.com/apps-script/drive/file  */ function movefoldertofolder(sourcefolderid, targetfolderid) {   var targetfolder = driveapp.getfolderbyid(targetfolderid);   var sourcefolder = driveapp.getfolderbyid(sourcefolderid);   var currentfolders = sourcefolder.getparents();   while (currentfolders.hasnext()) {     var currentfolder = currentfolders.next();     currentfolder.removefolder(sourcefolder);   }   targetfolder.addfolder(sourcefolder); }; 

if want deal folder names, need use getfoldersbyname() collect matching folders, iterate using next() list. here's how function modified use folder names. simplify things, assumes there one folder given name, , throws exception if that's not case. once have handle on folders we're interested in, balance of function remains same previous example.

function movenamedfoldertofolder(sourcefoldername, targetfoldername) {   var matchedfolders = driveapp.getfoldersbyname(sourcefoldername);   if (matchedfolders.hasnext()) {     var sourcefolder = matchedfolders.next();     if (matchedfolders.hasnext()) throw new error( "source folder name not unique" );   }   matchedfolders= driveapp.getfoldersbyname(targetfoldername);   if (matchedfolders.hasnext()) {     var targetfolder = matchedfolders.next();     if (matchedfolders.hasnext()) throw new error( "target folder name not unique" );   }    var currentfolders = sourcefolder.getparents();   while (currentfolders.hasnext()) {     var currentfolder = currentfolders.next();     currentfolder.removefolder(sourcefolder);   }   targetfolder.addfolder(sourcefolder); };