Google Apps Script: How to use ContinuationToken with recursive folder iterator -


because of drive api quotas, services quotas , limit of script execution time 6 min it's critical split google drive files manipulations on chunks.

we can use propertiesservice store continuationtoken folderiterator or fileiterator. way can stop our script , on next run continue place stop.

working example (linear iterator)

  // logs name of every file in user's drive   // useful script may take more 5 minutes (max execution time)   var userproperties = propertiesservice.getuserproperties();   var continuationtoken = userproperties.getproperty('continuation_token');   var start = new date();   var end = new date();   var maxtime = 1000*60*4.5; // max safe time, 4.5 mins    if (continuationtoken == null) {     // firt time execution, files drive     var files = driveapp.getfiles();   } else {     // not first time, pick left off     var files = driveapp.continuefileiterator(continuationtoken);   }   while (files.hasnext() && end.gettime() - start.gettime() <= maxtime) {     var file = files.next();     logger.log(file.getname());     end = new date();   }    // save place setting token in user properties   if(files.hasnext()){     var continuationtoken = files.getcontinuationtoken();     userproperties.setproperty('continuation_token', continuationtoken);   } else {     // delete token     propertiesservice.getuserproperties().deleteproperty('continuation_token');   } 

problem (recursive iterator)

for retrieve tree-like structure of folder , it's files have use recursive function. somethiong this:

dofolders(driveapp.getfolderbyid('root folder id')); // recursive iteration function dofolders(parentfolder) {   var childfolders = parentfolder.getfolders();   while(childfolders.hasnext()) {     var child = childfolders.next();     // folder     // go subfolders     dofolders(child);   } } 

however, in case have no idea how use continuationtoken.

question

how use continuationtoken recursive folder iterator, when need go throw folder structure?

assumption

is make sense construct many tokens name based on id of each parent folder?


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -