DevOps & Development 2 min de lectura 5 de septiembre de 2025

Notificaciones en Google Drive

Implementa un sistema de notificaciones automatizado para Google Drive que detecte nuevos archivos en subdirectorios y alerte a múltiples usuarios.

Solución en "Dos Clics" (TL;DR)

Configura notificaciones personalizadas para nuevas subidas de archivos en Google Drive usando Google Apps Script. Aprende a gestionar subdirectorios y personalizar el formato de las alertas por correo.

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.

Error detectado: La sincronización local de Drive no garantiza la recepción de notificaciones sobre cambios realizados por otros usuarios, lo que la hace insuficiente para entornos de trabajo donde la puntualidad en la gestión de documentos es crítica.

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.

Google Apps Script
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

Consejo Práctico: El uso de 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.