¿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 Carpeta | ID Carpeta | Número de Archivos |
|---|---|---|
| Combinar Correspondencia | 1a2b3c4d5e6f | |
| PDFs | 7g8h9i0j1k2l |
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.