jueves, 4 de marzo de 2021

Recorrer carpetas y documentos en DRIVE

Este artículo tiene como objetivo mostrar el código básico para trabajar con Drive, es decir, para recorrer todos los archivos y subcarpetas de drive.

 

Ultimamente he estado trabajando con los permisos que damos a carpetas y documentos drive. 

Nuestra recomendaciones son:

  • No utilizar permisos en carpetas (la herencia es difícil de controlar)
  • No utilizar permisos globales, salvo que haya una razón importante
  • Utilizar google groups para gestionar los permisos

 

Debido a estas recomendaciones, ha habido centros que se han encontrado con la tarea de cambiar un montón de permisos anteriores, como por ejemplo: infinidad de carpetas, subcarpetas y documentos que tienen permiso de "cualquiera de educación con el enlace". Otro ejemplo es tener infinidad de permisos en documentos obsoletos a los que queremos hacer desaparecer, sin tener que meter horas yendo documento por documento y persona por persona quitando estos permisos.

Gracias al código, todas estas necesidades se pueden hacer de forma automática, simplemente dando la dirección de una carpeta y el código se ocupa de limpiar de permisos todo lo que contenga dicha carpeta.

He hecho diferentes funciones, según el objetivo a conseguir, pero en todas se ha repetido el proceso básico de ir recorriendo todos los documentos y subcarpetas incluidas en una carpeta dada. Por eso, me parece interesante hacer una especie de código básico que controle este proceso y, que con diferentes variantes, nos permita hacer infinidad de cosas con drive.

 

Lo vamos a hacer en tres funciones entrelazadas: función inicial, función para archivos y función para subcarpetas. La unión es la siguiente:

Empezamos con la función inicial y de ahí llamamos a la función de los archivos. Desde archivos llamamos a la función de subcarpetas. En esta última, en la función subcarpetas volvemos a llamar a la función archivos (que vuelve a llamar a subcarpetas, que vuelve a llamar a archivos..... hasta que no hay más)

Este recorrido es fundamental para poder recorrer todos los archivos y subcarpetas que haya dentro de una carpeta.

 

Dentro de cada función estas son las líneas básicas:

 

Inicio:

 // Conseguimos la carpeta principal

 var carpeta_global =DriveApp.getFolderById(id_general)

// Llamamos a la función archivos

archivos(carpeta_global)

Archivos:

 // Conseguimos todos los archivos de la carpeta

  var archivos_global = carpeta_global.getFiles() 

// Los recorremos todos con un bucle

  while (archivos_global.hasNext()){

// Apuntamos a cada archivo (dentro del bucle)

var archivo= archivos_global.next();

// Con cada archivo podemos hacer lo que necesitemos, por ejemplo, 

archivo. setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE) //quitamos todos los permisos globales

}

// Una vez terminado con todos los archivos de esta carpeta llamamos a la función  de subcarpetas, fuera del bucle

   subcarpeta(carpeta_global)

Subcarpetas: 

// Conseguimos todas las subcarpetas que haya dentro

  var sub_carpetas = carpeta_global.getFolders()
// Hacemos el bucle para recorrerlas
     while (sub_carpetas.hasNext()) {

// Apuntamos a cada una de ellas
       var subcarpeta = sub_carpetas.next()

// Con cada subcarpeta podemos hacer muchas cosas, por ejemplo,

subcarpeta.removeEditor(correo) // Eliminamos un editor concreto

 // y dentro del bucle llamamos a la función archivos, PERO, pasando cada subcarpeta, en vez de la carpeta_global

archivos(subcarpeta)

Crear PDF horizontal

El código que vamos a mostrar aquí no ha sido creado por nosotros, sino que lo hemos encontrado en Internet. Objetivo: Publicar una pesta...