Saltar al contenido

Script de aplicaciones de Google: iterar carpeta y subcarpeta

Entiende el código correctamente previamente a adaptarlo a tu proyecto si ttienes algo que aportar puedes comentarlo.

Solución:

Para acceder a las subcarpetas, puede hacerlo de esta manera,

function getSubFolders(parent) 
  parent = parent.getId();
  var childFolder = DriveApp.getFolderById(parent).getFolders();
  while(childFolder.hasNext()) 
    var child = childFolder.next();
    Logger.log(child.getName());
    getSubFolders(child);
  
  return;


function listFolders() 
  var parentFolder = DriveApp.getFolderById("0B1n6YLYwFmK_dUpzRWhDRXNwdWc");
  var childFolders = parentFolder.getFolders();
  while(childFolders.hasNext()) 
    var child = childFolders.next();
    Logger.log(child.getName());
    getSubFolders(child);
  

Este Google Script generará un Google Drive Tree con todos los archivos y carpetas.

Copie este script en su editor de scripts. Seleccione la función “genFolderTree” del menú “Seleccionar función”. Cambie el nombre de la carpeta raíz ‘RootDir’ a su directorio raíz en la función genFolderTree()

var foldername = 'RootDir';

El código fuente de Google Script –

function genFolderTree() 

  try 

  var foldername = 'RootDir';
  var folderlisting = 'TreeView_' + foldername;

  var parentFolder = DriveApp.getFoldersByName(foldername).next();


  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  var frontCell = [];
  sheet.appendRow([foldername]).getCurrentCell().setFontWeight('bold').setFontColor('red');
  frontCell.push(" ");
  getChildNode(parentFolder,sheet,frontCell);
  var files = parentFolder.getFiles();
  while (files.hasNext()) 
    frontCell.push(files.next().getName());
    sheet.appendRow( frontCell);
    frontCell.pop();
    

   catch (e) 

    Logger.log(e.toString());

  




function getChildNode(parent,sheet,frontCell) 

  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) 

    var childFolder = childFolders.next();

    frontCell.push(childFolder.getName())
    sheet.appendRow(frontCell);
    sheet.getRange(sheet.getLastRow(), frontCell.length).setFontWeight('bold').setFontColor('red');
    frontCell.pop();
    var files = childFolder.getFiles();
    frontCell.push(" ");
    var start_row = 0;
    var row_no = 0;
    while (files.hasNext()) 
      frontCell.push(files.next().getName());
      sheet.appendRow(frontCell);
      if(row_no==0)
        start_row = sheet.getLastRow();
      
      row_no=row_no+1;
      frontCell.pop();
    
    if(row_no>0)
      var range;
      range = sheet.getRange(start_row, frontCell.length,row_no);
      // The row grouping depth is increased by row_no.
      range.shiftRowGroupDepth(1);
    

    // Recursive call for any sub-folders
    getChildNode(childFolder,sheet,frontCell);
    frontCell.pop();
  


Puedes descargar la fuente desde el enlace de Github

Sección de Reseñas y Valoraciones

Recuerda algo, que puedes agregar una reseña si diste con la contestación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *