Cómo contar archivos en carpetas de Google Drive con Apps Script

¿Quieres saber cuántos archivos tienes en una carpeta específica de tu Google Drive sin tener que entrar a cada una? En este tutorial te voy a mostrar cómo hacerlo con Google Apps Script, de forma sencilla y práctica. Además, te enseñaré cómo automatizar el conteo para varias carpetas desde una hoja de cálculo en Google Sheets. Esto es ideal si manejas muchos documentos, facturas o certificados organizados en distintas carpetas y quieres tener un control rápido y actualizado. ¡Vamos a darle!

Si prefieres ver el tutorial en video, te lo dejo a continuación para que puedas seguirlo paso a paso:

¿Qué vamos a construir?

Primero crearemos una función en Google Apps Script que cuente los archivos dentro de una carpeta específica usando su ID. Luego, construiremos otra función para aplicar este conteo a varias carpetas listadas en una hoja de cálculo de Google Sheets. Así podrás tener un reporte automático y dinámico con el número de archivos en cada carpeta, sin tener que abrirlas una por una.

Cómo contar archivos en una carpeta de Google Drive

Vamos paso a paso. Lo primero es crear un script que reciba el ID de una carpeta y devuelva la cantidad de archivos que contiene. Yo lo hago así:

function contarArchivos(idCarpeta) {
  var carpeta = DriveApp.getFolderById(idCarpeta);
  var archivos = carpeta.getFiles();
  var contador = 0;

  while (archivos.hasNext()) {
    archivos.next();
    contador++;
  }

  return contador;
}

Ahora te explico cada línea para que entiendas bien cómo funciona:

  • DriveApp.getFolderById(idCarpeta): Obtiene la carpeta en Drive usando su ID único.
  • carpeta.getFiles(): Crea un iterador que recorre todos los archivos dentro de esa carpeta.
  • while (archivos.hasNext()): Mientras haya archivos por recorrer, ejecuta el ciclo.
  • archivos.next(): Avanza al siguiente archivo en la lista.
  • contador++: Incrementa el contador en uno por cada archivo encontrado.

Este método es muy eficiente y recomendado para trabajar con colecciones en Apps Script, ya que no carga todos los archivos a la memoria, sino que los recorre uno a uno.

Cómo contar archivos en varias carpetas desde Google Sheets

Ahora que ya tenemos la función para contar archivos en una carpeta, vamos a automatizar el proceso para varias carpetas usando una hoja de cálculo. Imagina que tienes una tabla como esta:

Nombre CarpetaID CarpetaNúmero de Archivos
Combinar Correspondencia1a2b3c4d5e6f
PDFs7g8h9i0j1k2l

En la columna 1 tienes el nombre de la carpeta, en la columna 2 el ID de la carpeta, y en la columna 3 queremos que aparezca el número de archivos.

Para llenar la columna 3 automáticamente, este es el script que uso para recorrer todas las filas y escribir el conteo:

function juntarArchivosParaTabla() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const columnaID = 2;
  const columnaContador = 3;

  for (var fila = 2; fila <= hoja.getLastRow(); fila++) {
    var idCarpeta = hoja.getRange(fila, columnaID).getValue();
    if (idCarpeta) { // Validar que no esté vacío
      var contador = contarArchivos(idCarpeta);
      hoja.getRange(fila, columnaContador).setValue(contador);
    }
  }
}

Te explico cómo funciona esta función:

  • SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(): Obtiene la hoja activa donde tienes los datos.
  • columnaID y columnaContador: Constantes para identificar las columnas donde están el ID y donde se escribirá el conteo. Así es más fácil cambiar si modificas la tabla.
  • for (var fila = 2; …): Recorre desde la fila 2 hasta la última fila con datos (asumiendo que la fila 1 es el encabezado).
  • hoja.getRange(fila, columnaID).getValue(): Obtiene el ID de la carpeta en esa fila.
  • contarArchivos(idCarpeta): Llama a la función que cuenta los archivos en esa carpeta.
  • hoja.getRange(fila, columnaContador).setValue(contador): Escribe el resultado en la columna de conteo.
  • Agregué una validación para que solo intente contar si el ID no está vacío, evitando errores.

Consideraciones importantes y mejoras

Antes de terminar, ten en cuenta estos puntos que te ayudarán a sacarle el máximo provecho al script:

  • Este método solo cuenta archivos directamente dentro de la carpeta, no incluye archivos dentro de subcarpetas.
  • Si quieres contar archivos dentro de subcarpetas, necesitarás una función recursiva que explore cada subcarpeta y sume sus archivos.
  • Debes tener permisos de acceso a las carpetas para que el script pueda leer sus contenidos.
  • Para mayor automatización, puedes programar este script para que se ejecute automáticamente cada cierto tiempo usando disparadores (triggers) de Apps Script.
  • Si tienes muchas carpetas y archivos, ten en cuenta los límites de ejecución de Apps Script para evitar que el script se detenga por tiempo.

Conclusión

Hoy aprendimos a crear una función en Google Apps Script para contar archivos en una carpeta de Google Drive y cómo aplicarla para listar el número de archivos en múltiples carpetas desde Google Sheets. Este método es súper útil para tener un control rápido y actualizado de tus documentos, facturas, certificados o cualquier archivo que manejes en Drive.

Como próximos pasos, te recomiendo que explores cómo hacer una función recursiva para incluir archivos en subcarpetas, o que configures un disparador para que el conteo se actualice automáticamente cada cierto tiempo, manteniendo tu reporte siempre al día.

Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.