Guardar Automáticamente Archivos Adjuntos de Emails en Drive

Google Workspace, anteriormente conocido como G Suite, ofrece un conjunto de herramientas que optimizan la productividad, y en este post, exploraremos cómo automatizar el proceso de guardar los archivos adjuntos de un Grupo de Google, o de cualquier otra bandeja de entrada, en una carpeta específica de Google Drive.

Cover

Problema

Imaginá que estás gestionando un Grupo de Google, o tu propia cuenta de Gmail, donde se envían adjuntos importantes de manera regular. Guardar estos adjuntos manualmente en tu Google Drive puede llevar mucho tiempo y ser propenso a errores. ¿Hay alguna forma de automatizar este proceso y asegurarte de no perder ningún documento crucial?

Solución

La solución está en aprovechar el poder de Google Apps Script, un lenguaje de scripting versátil que se integra perfectamente con los servicios de Google Workspace. Al crear un script personalizado, podés automatizar el proceso de extraer los adjuntos de los correos recibidos en tu bandeja de entrada y guardarlos en una carpeta específica de Google Drive.

Acá te explico cómo lograrlo:

  1. Crear el Script: Empezá creando un proyecto de Google Apps Script dentro de tu Google Drive. Este proyecto contendrá el código que automatiza el proceso de guardar los adjuntos.
  2. Recuperar Adjuntos de Email: Utilizá GmailApp, un servicio integrado en Google Apps Script, para buscar correos en tu Google Group que contengan adjuntos. Recorrelos, extraé los adjuntos y preparalos para ser guardados.
  3. Acceder a Google Drive: Para guardar los adjuntos, usá DriveApp, otro servicio de Google Apps Script. Podés identificar la carpeta de destino en Google Drive mediante su ID único.
  4. Automatizar la Ejecución: Configurá un trigger basado en el tiempo para tu script. Este trigger ejecutará el script periódicamente, asegurando que los nuevos adjuntos se guarden automáticamente en Google Drive.

Crear el Script

A continuación, se muestra un ejemplo de Google Apps Script que guarda automáticamente los adjuntos de los correos recibidos en tu bandeja de entrada en una carpeta específica de Google Drive. Tené en cuenta que necesitarás personalizar algunas partes del script, como el ID de la carpeta y la consulta de búsqueda, para ajustarlo a tu caso específico.

  1. Abrí Google Drive.
  2. Creá un nuevo proyecto de Google Apps Script haciendo clic en “Nuevo” > “Más” > “Google Apps Script.”
  3. Reemplazá el código predeterminado con el script que te proporcionamos abajo.
  4. Guardá el script y dale un nombre.
  5. Ejecutá el script manualmente la primera vez para otorgar permisos de acceso a Gmail y Drive.
  6. Configurá un trigger o disparador para que el script se ejecute periódicamente (por ejemplo, cada hora).
function saveNewAttachmentsToDrive() {
  var folderId = "PUT_YOUR_FOLDER_ID_HERE"; // Replace with the ID of the destination folder in Google Drive
  var searchQuery = "to:[email protected] has:attachment"; // Replace with the search query to find emails with attachments
  var lastExecutionTime = getLastExecutionDate();
  var threads = GmailApp.search(searchQuery + " after:" + lastExecutionTime);
  var driveFolder = DriveApp.getFolderById(folderId);
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      var message = messages[j];
      var attachments = message.getAttachments();
      for (var k = 0; k < attachments.length; k++) {
        var attachment = attachments[k];
        var attachmentBlob = attachment.copyBlob();
        var fileName = attachment.getName();
        driveFolder.createFile(attachmentBlob).setName(fileName);
      }
    }
  }
  updateLastExecutionDate();
}

function getLastExecutionDate() {
  var properties = PropertiesService.getUserProperties();
  return properties.getProperty("lastExecutionDate") || "2023-09-01";
}

function resetLastExecutionDate() {
  PropertiesService.getUserProperties().deleteProperty("lastExecutionDate");
}

function updateLastExecutionDate() {
  var now = new Date();
  var dateString = now.toISOString().split("T")[0];
  var properties = PropertiesService.getUserProperties();
  properties.setProperty("lastExecutionDate", dateString);
}

Notas Importantes:

Asegurate de reemplazar PUT_YOUR_FOLDER_ID_HERE con el ID real de la carpeta de destino en tu Google Drive. Para obtener el ID de la carpeta, abrí la carpeta en Google Drive, y el ID se encuentra en la URL después de “folders/”. Modificá la variable searchQuery para que coincida con los criterios de los correos electrónicos que querés procesar. La consulta de ejemplo busca correos de una dirección de email específica ([email protected]) con adjuntos, pero podés ajustarla según tus necesidades. Recordá que al ejecutar el script se guardarán los adjuntos de los correos coincidentes en la carpeta especificada en Google Drive. Asegurate de tener los permisos necesarios para acceder al Grupo de Google y a la carpeta de destino en Drive.

Automatizando la Ejecución con Triggers

Una vez que hayas creado tu Google Apps Script, el siguiente paso es asegurarte de que el script se ejecute automáticamente en intervalos específicos. Esto se logra a través de triggers, que programan la ejecución de tu script según el intervalo de tiempo que desees.

Acá te explico cómo configurar un trigger para tu script:

  1. Abrí el Editor de Scripts: En tu proyecto de Google Apps Script, hacé clic en el menú “Extensiones” > “Apps Script” Esto abrirá el Editor de Scripts.
  2. Creá un Trigger: En el Editor de Scripts, hacé clic en el ícono de reloj (Triggers) ubicado en la barra lateral izquierda. Esto abrirá el panel de triggers.
  3. Agregar un Nuevo Trigger: Hacé clic en el botón “+ Agregar Trigger” en la esquina inferior derecha. Esto abrirá la ventana de configuración del trigger.
  4. Configurar el Trigger: En la ventana de configuración del trigger, deberás especificar los siguientes detalles:
  5. Elegí qué función ejecutar: Seleccioná la función que querés que se ejecute. En nuestro caso, es la función responsable de guardar los adjuntos (saveNewAttachmentsToDrive).
  6. Elegí qué implementación ejecutar: Seleccioná “Head.”
  7. Seleccioná la fuente del evento: Elegí “Basado en el tiempo.”
  8. Seleccioná el tipo de trigger basado en el tiempo: Seleccioná tu intervalo preferido (por ejemplo, cada hora, cada día, cada semana).
  9. Guardar el Trigger: Una vez que hayas configurado los ajustes del trigger, hacé clic en el botón “Guardar.” El trigger ahora estará activo y ejecutará automáticamente tu script en los intervalos que especificaste.
  10. Revisá y Gestioná Triggers: Podés ver y gestionar tus triggers en cualquier momento volviendo al panel de triggers en el Editor de Scripts. Acá podés editar, eliminar o ajustar el cronograma de tus triggers según sea necesario.

Conclusión

Automatizar tareas usando Google Apps Script puede mejorar significativamente la productividad al eliminar procesos manuales y repetitivos. En este post, exploramos cómo usar Google Apps Script para guardar automáticamente los adjuntos de correos electrónicos de un Grupo de Google en una carpeta designada en Google Drive. Al implementar esta solución, podés asegurarte de que los documentos importantes estén organizados y accesibles, mientras minimizás el tiempo y esfuerzo dedicado a tareas manuales.