Cómo mejorar tu productividad con Google Apps Script

mejorar tu productividad con google script

Hola a todos! hoy veremos cómo mejorar tu productividad usando Google Script, en este caso usaremos Google Sheets y Gmail para automatizar algunas tareas.

La idea es que en base a una Google Sheet que contiene un listado de personas/clientes/amigos y sus emails podamos enviar un correo a cada uno usando un script que automáticamente recorre la lista, genera el correo, le adjunta un archivo y realiza el envío a través de Gmail.

Caso real a solucionar

Este artículo surge de una consulta que me llegó a través de un comentario en este otro artículo; el problema es que Jesús (nuestro lector) administra un condominio con 64 apartamentos y mensualmente genera un resumen de los gastos en distintos archivos Excel (uno por apto). Luego, adjunta el archivo a un mail el cual es enviado manualmente uno a uno… una tarea titánica y tediosa que le consume bastante tiempo todos los meses.

Es fácil darse cuenta que este problema es bastante común y puede presentarse de distintas formas, imaginen por ejemplo si estuvieran armando una fiesta y quisieran enviar por mail la invitación a todos los participantes. Entonces, las situaciones pueden ser muy variadas pero la solución es única e independiente sólo hay que seguir los pasos que vamos a ver a continuación y lograremos automatizar el flujo de trabajo completo aprovechando todo el poder de Google App Scripts.

En resumen, lo que queremos lograr es:

  • enviar mails mensuales de forma automática (esto a lo aprendimos cuando vimos cómo automatizar envíos de emails).
  • obtener los destinatarios de una hoja de cálculo que contiene sus datos (email, nombre, etc.).
  • personalizar los correos y adjuntar un documento específico a cada uno.

Ahora sí, sin más vueltas vamos a la solución.

Mejorar tu productividad en 3 pasos

Preparando una Google Sheet – PASO 1

Para los que no saben, una Google Sheet (hoja de cálculo) es ni más ni menos que un archivo Excel pero de Google Drive. Aclarado esto, lo primero que vamos a hacer es crear una nueva Sheet que tendrá el listado con las personas a quienes queremos enviar el mail;  deberá tener el siguiente formato:

Nombre propietario Email Mensaje Adjunto Enviado
Pedro Pérez pp@mail.com Mensaje para Pedro archivo1
María Gómez mg@mail.com Mensaje para María archivo2

Desde esta Sheet vamos a tomar los datos para generar automáticamente los e-mails y enviarlos con los archivos adjuntos correspondientes, expliquemos algunas de las columnas de la hoja de cálculo.

Las tres primeras columnas son bastante básicas, el nombre, el email y un mensaje que usaremos en cada correo generado.

En la columna “Adjunto” escribiremos el nombre del archivo a adjuntar, la idea es que sea un nombre único por destinatario y puede ser cualquier tipo de archivo que tengamos en nuestro Google Drive; aclarar que basta con poner el nombre del archivo (sin incluir la extensión del archivo).

La columna “Enviado” sirve como control, como es un proceso que puede demorar, iremos marcando a quien se le ha enviado el correo, así en caso de que el proceso se interrumpa  podemos retomarlo sin tener que re procesar toda la lista.

Creando el script en nuestra hoja de cálculo – PASO 2

El siguiente paso es crear el script que generará y enviará los correos, en este caso el script estará contenido en la propia hoja de cálculo que acabamos de crear y para eso vamos a ir al menu “Herramientas” -> “Editor de Secuencias de comando” (ver imagen).

Envío de correos con Google spreadsheet

Seguidamente tendrán acceso al editor de scripts, donde insertarán el siguiente código que luego explicaremos.

Lo que hacemos en el script es implementar una función que hace lo siguiente:

  • obtiene el rango de datos a procesar (fijate en la linea 7 que salteamos el cabezal).
  • procesa linea por linea obteniendo los datos de cada persona.
  • verifica si ya se le ha enviado el mail a esa persona.
  • si no fue enviado, genera un correo, obtiene el archivo especificado y lo adjunta al correo.
  • finalmente, envía el correo y escribe en la columna “Enviado” para saber que esa linea ya fue procesada.

Configurando eventos – PASO 3

Sólo nos falta automatizar la tarea mensualmente, es decir que, debemos configurar un “Activador” para que cierto día del mes automáticamente se ejecute nuestro script y envíe los correos.

Para eso debemos ir a la barra de herramientas y presionamos el botón de “Activadores del proyecto”.

mejorar productividad con google script

Luego creamos un nuevo “Activador” y configuramos el evento con los siguientes valores:

  • Tipo de disparador: Basado en el tiempo
  • Temporizador mensual.
  • Día: 5 (es un ejemplo)
  • Hora: entre 1pm y 2pm. (es un ejemplo)

mejorar productividad automatizar tareas

Con estos valores estamos diciendo que nuestro script debe ejecutarse el día 5 de cada mes entre la 1pm y las 2pm. Es claro que los valores los ajustan a su gusto 😉

Resumen

Con esta solución, lo único que debe hacer Jesús es generar los archivos de gastos y subirlos a Google Drive antes de la fecha de ejecución que hayamos configurado.

Algunos detalles sobre esta solución que se pueden mejorar:

  • podemos quitar la columna ENVIADO así no tenemos que borrarla todos los meses, pero nos quedaríamos sin control de envíos.
  • otra opción es autogenerar nuevas columnas para cada mes procesado.
  • obtener el rango de registros automáticamente.
  • administrar los nombres de los archivos automáticamente según el mes (ej.: archivoPropietario-noviembre); de esta forma estandarizamos los nombres y no debemos preocuparnos por borrar los archivos viejos.

Resultados obtenidos

  • Con todo lo que hemos visto puedes mejorar tu productividad delegando las tareas repetitivas en herramientas como Gmail, Google Sheets y Google App Script que están al alcance de todos y de forma gratuita.
  • Además, hemos logrado automatizar todo el flujo de trabajo que realizábamos manualmente, reduciendo al mínimo el trabajo repetitivo.
  • También, hemos reducido la cantidad de horas de trabajo y por lo tanto aumentamos y mejoramos nuestra productividad.
  • Finalmente, hemos reducido la posibilidad de cometer errores durante el proceso de trabajo mediante el uso de herramientas automatizables.

aumentar productividad y automatizar tareas

Bueno eso es todo… espero que el artículo le sea útil a Jesús y a todos los lectores. Si te gustó, me encantaría que lo compartieras en tus redes sociales. Y si tienes más consultas o sugerencias puedes dejarlas en la sección de comentarios del post.

¿En qué otras situaciones se podría usar esta solución o una similar? ¿Te parece que esta solución puede mejorar tu productividad? ¿De qué manera?

Más info: Developers Apps Script

GD Star Rating
loading...

Related Posts

10 Comments

  1. Andres
    Enero 2, 2016 at 4:16 pm

    Hola Juan, te quiero consultar lo siguiente:tengo que enviar un mail diario a una lista de contactos, este mail en el asunto puede tener un numero correlativo o bien la fecha del dia, y un archivo adjunto que es un .mp3 que los tengo numerados; se podrá hacer automáticamente?….gracias!!
    Saludos!

  2. Juan Benitez
    Enero 6, 2016 at 10:25 pm

    Hola Andres, en este artículo se muestra casi todo lo que precisas para hacerlo:
    1- enviar mail diario a una lista de contactos -> está cubierto.
    2- adjuntar un archivo -> está cubierto.
    3- asunto del mail con número o fecha -> esto lo puedes hacer desde la planilla directamente (create una nueva columna) o programando en el script como se muestra en este artículo.

    saludos, Juan.

  3. FRAN
    Febrero 19, 2016 at 10:11 pm

    Hola Juan

    Muy buen script. Muy util. 😉
    a) Como lo harias para enviar un email a varias direcciones?
    Es decir al alumno con CC a su padre o profesor (estos datos en 2 nuevas columnas)

    Gracias
    Fran

  4. Juan
    Febrero 23, 2016 at 6:31 pm

    Hola Fran, el método sendMail quedaría algo así:

    te recomiendo que veas la Referencia a la API por más opciones.
    saludos.

  5. Jesus Casillas
    Marzo 16, 2016 at 12:30 pm

    Muchas gracias y muy interesante me ayudo mucho

    Tengo una duda, he buscado y no logro encontrar, como puedo hacer que en Google Sheet, al momento de abrirlo se vaya generando en una celda un consecutivo numerico sin la necesidad de utilizar un formulario, directamente de la hoja de calculo, esto lo hice pero en VB, pero no logro hacerlo en apps script

    *****Ejemplo de VB****

    Sub Incrementar()

    Range(“F5”).Select

    ActiveCell.FormulaR1C1 = Range(“F5”).Value + 1

    End Sub

  6. Juan
    Marzo 17, 2016 at 12:57 pm

    Jesús, te lo contesto en un nuevo articulo así queda bien explicado y disponible para todos los fans de google apps script 😉

  7. Jorge Andres Reina
    Marzo 28, 2016 at 2:22 am

    Hola buenas noches quisiera saber como podria crear un script que me ayude hacer un contador de mensajes entre cierto grupo de personas que me cuente por decir un ejemplo un grupo de cuatro personas se han estado enviado correos entre ellos durante una semana y quisiera por medio de un script hacer un contador que me lleve cuantos mensajes se han enviado todos por semana, le agradezco una respuesta.

  8. Eliezer
    Junio 14, 2016 at 4:25 pm

    Hola me gustaria saber si se puede crear uno en el que tu le pongas tu Facebook y te cheque los likes, comentarios, campartidos que al igual te ponga el post y el link y que eso lo haga cada semana

  9. Jesus Casillas
    Septiembre 7, 2016 at 7:51 pm

    Buenas tardes

     

    Como puedo adjuntar un archivo  desde formulario de drive

     

    Saludos

  10. Jaime Orozco
    Febrero 15, 2017 at 6:33 pm

    Hola Juan

       Muchas gracias por tu articulo me ha sido de gran ayuda, tengo un problema, he programado el activador y no ha funcionado, tengo que ejecutar de forma manual este es el script que pegue de acuerdo a tus indicaciones, me puedes ayudar por favor?

    // constante para saber si el email fue enviado.
    var EMAIL_SENT = "ENVIADO";

    function enviosDiarios() {
     
      var sheet = SpreadsheetApp.getActiveSheet();
      var startRow = 2;  // primer fila para procesar (salteamos el cabezal)
      var numRows = 4;   // filas totales para procesar
     
      // Obtengo el rango de celdas a preocescar A2:E3
      var dataRange = sheet.getRange(startRow, 1, numRows, 5);
      // Obtengo los valores de las filas
      var data = dataRange.getValues();
      
      for (var i = 0; i < data.length; ++i) {
        var row = data[i];
        var nombrePropietario = row[0]; // primera columna
        var emailDireccion    = row[1]; // segunda columna
        var mensaje           = row[2]; // tercera columna
        var nombreAdjunto     = row[3]; // cuarta columna
        var colEnviado        = row[4]; // quinta columna
        
        if (colEnviado != EMAIL_SENT) {  // previene de enviar duplicados
          var asunto = "PROYECTO SEGUIMIENTO POST VENTA";
          mensaje = "Sr.(ita) " + nombrePropietario + ": " + mensaje;
          var adjunto = DriveApp.getFilesByName(nombreAdjunto);
          
          MailApp.sendEmail(emailDireccion, asunto, mensaje, 
                            {name: 'SEGUIMIENTO POST VENTA', 
                             attachments:[adjunto.next()],
                             bbc: 'xxxxx@xxxxxxx.com.' ,           
                            } 
                           );
          sheet.getRange(startRow + i, 5).setValue(EMAIL_SENT);
          // actualizo 
          SpreadsheetApp.flush();
        }
      }
    }

Leave A Comment

Security Code:

Leer más
crear pdf con PHP
Crear PDF con PHP y FPDF

En este artículo vamos a ver como crear pdf con PHP, usando la librería FPDF, la misma está escrita totalmente...

Cerrar