Google Drive no ofrece notificaciones nativas cuando otros usuarios añaden archivos a una carpeta compartida, lo cual representa un reto para la gestión documental colaborativa. Tras explorar alternativas como la aplicación de escritorio, que resultó inconsistente, desarrollé una solución basada en Google Apps Script para automatizar alertas precisas por correo electrónico.
1. El problema: Limitaciones de visibilidad en Drive
El objetivo era recibir alertas automáticas al detectar nuevos archivos en una estructura de carpetas compartida. Inicialmente, consideré la aplicación Google Drive para escritorio, pero tras realizar pruebas, confirmé que las notificaciones del sistema operativo son poco fiables: no notifican consistentemente archivos subidos por terceros y no permiten alertas personalizadas para otros miembros del equipo.
2. Desarrollo de la solución: Google Apps Script
La alternativa más robusta fue implementar un script en Google Apps Script. Este enfoque permite una monitorización programada que recorre la estructura de directorios, identifica archivos nuevos mediante la comparación de fechas de creación y envía un reporte por correo electrónico.
Recursividad para subdirectorios
Un desafío técnico inicial fue que el script solo detectaba archivos en la raíz. Para solucionar esto, implementé una función recursiva que recorre toda la jerarquía de subcarpetas, capturando la ruta completa de cada nuevo archivo.
function notificarNuevosArchivos() {
const carpetaID = 'ID_CARPETA';
const destinatarios = ['correo1@tucentro.edu'];
const carpeta = DriveApp.getFolderById(carpetaID);
const propiedades = PropertiesService.getScriptProperties();
const ultimaRevision = propiedades.getProperty("ultimaRevision") || new Date(0).toISOString();
const fechaUltimaRevision = new Date(ultimaRevision);
let nuevosArchivos = [];
function recorrerCarpeta(carpeta, ruta) {
const archivos = carpeta.getFiles();
while (archivos.hasNext()) {
const archivo = archivos.next();
if (archivo.getDateCreated() > fechaUltimaRevision) {
nuevosArchivos.push('📄 ' + archivo.getName() + '\n📂 Directorio: ' + ruta + '\n🕒 ' + archivo.getDateCreated().toLocaleString());
}
}
const subdirectorios = carpeta.getFolders();
while (subdirectorios.hasNext()) {
const sub = subdirectorios.next();
recorrerCarpeta(sub, ruta + '/' + sub.getName());
}
}
recorrerCarpeta(carpeta, carpeta.getName());
if (nuevosArchivos.length > 0) {
const mensaje = 'Se han agregado nuevos archivos:\n\n' + nuevosArchivos.join('\n\n');
destinatarios.forEach(function(correo) {
MailApp.sendEmail({to: correo, subject: '📥 Nuevos archivos en Drive', body: mensaje});
});
}
propiedades.setProperty("ultimaRevision", new Date().toISOString());
}3. Consideraciones técnicas
PropertiesService es fundamental para persistir la fecha de la última revisión entre ejecuciones del script, evitando así enviar notificaciones duplicadas.Es importante aclarar que el correo enviado por el script no adjunta el archivo físicamente, sino que proporciona una referencia textual. Esto significa que no se consume espacio adicional en el almacenamiento de Google Drive, ya que el archivo reside únicamente en la nube y el correo solo actúa como un canal de notificación.
La historia detrás de la nota
La automatización mediante scripts en Google Workspace permite superar las limitaciones de diseño de la plataforma, transformando una carpeta estática en un sistema de flujo de trabajo activo y colaborativo.