Como obtener los ficheros de una carpeta con Google Apps Script


 En muchas ocasiones cuando programamos en Google Apps Script podemos necesitar obtener los ficheros que hay en una carpeta ya sea para analizarlos,  copiarlos o crear nuevos ficheros.

El código que os mostraré es muy sencillo pero lo suficientemente potente para que podáis montar vuestra gestión de ficheros con Google Apps Script como necesitéis.

Lo primero es repasar un poco la base de como acceder a ficheros y carpetas con Google Apps Script:

function GetFolder()
{
  //Opcion1: Sabemos el id del folder
  var folder = DriveApp.getFolderById("XXXYYYZZZZ");
  
  //Opcion2: Obtenemos todos los folders
  var folders = DriveApp.getFolders();
  
  //Opcion3: Obtenemos todos los folders con un cierto nombre
  var folders = DriveApp.getFoldersByName("bllbalabbla");
  
  //En la opcion 2 y 3 obtenedremos un iterador.
  //Si queremos el primer folder de la lista solo tendriamos que hacer esto
  if(folders.hasNext())
  {
    folder = folders.next();
  }
  
  //NOTA: Podríamos hacer operaciones en todos los folders de la lista de esta manera
  /*
  while(folders.hasNext())
  {
     var folder = folders.next();
     
     //Aqui hariamos lo que quisieramos con cada folder
  }
  */
  
  return folder;
}

function GetFiles()
{
   var folder = GetFolder();
   
   //OPCION1: Sabemos el id del file que queremos obtener
   var file = DriveApp.getFileById("XXXXXX");
   
   //OPTION2: Obtenemos todos los ficheros con un cierto nombre
   var files = DriveApp.getFilesByName("blalblablbl");
   
   //OPTION3: Obtenemos todos los ficheros de un cierto tipo ( pdf, csv, docs,sheets, etc..)
   var files = DriveApp.getFilesByType(MimeType.PDF);
   
  //En la opcion 2 y 3 obtenedremos un iterador.
  //NOTA: Podriamos hacer operaciones en todos los files de la lista de esta manera
  /*
  while(files.hasNext())
  {
     var file = files.next();
     
     //Aqui hariamos lo que quisieramos con cada file
  }
  */
  
  //Todas estas opciones se pueden hacer cambiando DriveApp por un folder
  /*
  var files = folder.getFilesByName("blalblablbl");
  var files = folder.getFilesByType(MimeType.PDF);
  */
}


Una vez esto lo tenemos claro os dejo un código que os permitirá obtener todos los ficheros de una carpeta de forma recursiva ( es decir, irá abriendo todas las carpetas que haya dentro para ir buscando hasta el último fichero:


function TestRecursive()
{
   var folder = DriveApp.getFolderById("XXXXXXXXX");
   GetFilesRecursive(folder);
}

function GetFilesRecursive(folder)
{
   var folders = folder.getFolders();
   while(folders.hasNext())
   {
     var f = folders.next();
     GetFilesRecursive(f);
   }
   
   var files = folder.getFiles();
   while(files.hasNext())
   {
     var f = files.next();
     Logger.log(f.getName());
   }
}

Espero que os sirva, no vaciléis en hacerme llegar vuestras dudas

Nos vemos


No hay comentarios:

Publicar un comentario

Tal vez te interese