Script do Google Apps: como usar o ContinuationToken com o iterador recursivo de pastas

Devido às cotas da API do Drive,Cotas de serviços e limite de tempo de execução do script6 min geralmente é fundamental dividir as manipulações de arquivos do Google Drive em pedaços.

Podemos usarPropertiesService armazenarcontinuationToken paraFolderIterator ouFileIterator. Dessa forma, podemos parar nosso script e, na próxima execução, continuar do local em que paramos.

Exemplo de trabalho (iterador linear)
  // Logs the name of every file in the User's Drive
  // this is useful as the script may take more that 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, get all files from Drive
    var files = DriveApp.getFiles();
  } else {
    // not the first time, pick up where we 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 your place by setting the token in your user properties
  if(files.hasNext()){
    var continuationToken = files.getContinuationToken();
    userProperties.setProperty('CONTINUATION_TOKEN', continuationToken);
  } else {
    // Delete the token
    PropertiesService.getUserProperties().deleteProperty('CONTINUATION_TOKEN');
  }
Problema (iterador recursivo)

Para recuperar a estrutura de pastas em forma de árvore e obter seus arquivos, precisamos usar a função recursiva. Algo assim:

doFolders(DriveApp.getFolderById('root folder id'));
// recursive iteration
function doFolders(parentFolder) {
  var childFolders = parentFolder.getFolders();
  while(childFolders.hasNext()) {
    var child = childFolders.next();
    // do something with folder
    // go subfolders
    doFolders(child);
  }
}

No entanto, neste caso, não tenho idéia de como usarcontinuationToken.

Pergunta, questão

Como usarContinuationToken com o iterador de pasta recursivo, quando precisamos ir jogar toda a estrutura de pastas?

Suposição

Faz sentido construir muitos tokens com nome com base noid De cadaparent pasta?

questionAnswers(1)

yourAnswerToTheQuestion