jueves, 27 de junio de 2013

Tutorial Google App Script: envio de emails con hojas de cálculo y gmail

Lo que haremos en este tutorial de Google App Script será crear una hoja de cálculo con usuarios en los que aparezcan su nombre, apellidos y su email. Lo que hará el script será enviar un correo a cada uno de los usuarios con el mensaje que queramos.

Lo primero que tenemos que hacer es crear una hoja de cálculo. Para ello nos vamos a Google Drive y seleccionamos Crear > Hoja de cálculo (Spreadsheet):
Damos un nombre a nuestra hoja de cálculo y le metemos algunos usuarios (yo he puesto 3 con emails de ejemplo pero convendría poner alguno válido para comprobar que nos llega el correo y funciona):


Una vez rellenados los campos nos vamos al menú herramientas y seleccionamos editor de script (Script editor):
En el editor de script debemos añadir una primera función llamada onOpen:


function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var menu = [{
    name: "Enviar e´mails",
    functionName: "enviarMail"
  }];

  ss.addMenu("Enviar", menu);
}

Este nombre de función (onOpen) viene predefinida por Google App Script para que se ejecute siempre que se abra la hoja de cálculo. Lo que hacemos en la función creada es:
Obtenemos la hoja de cálculo en la variable ss. Con esta variable utilizaremos la función addMenu, a la que la pasaremos un nombre que queramos que aparezca en nuestro menú de la hoja de cálculo y una variable llamada menu que tiene un array con un objeto dentro.

Esta variable menu tiene un objeto con dos atributos: name en el que le especificaremos el nombre de nuestra pestaña cuando hagamos click en el botón de "Enviar" (que habíamos especificado en la función addMenu) y un atributo functionName que llamara a la función que le especifiquemos a continuación  en este caso, llamará a la función enviarMail.
(Podriamos añadir todos los objetos que quisiéramos dentro de esta variable menu).

Guardamos nuestro editor de script y actualizamos la hoja de cálculo. Nos aparecerá el nuevo botón tal y como hemos especificado anteriormente:
(Una vez actualizada la hoja de cálculo este botón puede tardar unos segundos en aparecer, hay que tener paciencia.)

Ahora cada vez que hagamos click en el botón Enviar y en la pestaña Enviar e'mails se llamará a la función que especificamos con anterioridad enviarMail. Si lo hacemos ahora no tendrá ningún efecto ya que aún no hemos creado la función, es lo que haremos ahora.

Volvemos a entrar a nuestro editor de script y debajo de la función onOpen vamos a crear la función enviarMail:


function enviarMail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getDataRange();
  range = range.offset(1, 0, range.getNumRows()-1);

  range.getValues().forEach( function( user, index, data ){
    var mensaje = "Hola " + user[0] + ",\n\nCuerpo del mensaje\n\nUn saludo";
    GmailApp.sendEmail(user[0] + " " + user[1] + "<" + user[2] + ">", "Email enviado!", mensaje);
  });
}

Esta función lo que hace es volver a obtener la hoja de cálculo, marcarla como activa y obtener el rango de celdas que vamos a utilizar.

range.getValues().forEach recorrerá cada una de las filas de la hoja de cálculo e irá enviando a cada usuario un mensaje con lo que especifiquemos en la variable mensaje. En la función  GmailApp.sendEmail especificamos:
GmailApp.sendEmail(destinatario, "Titulo del mensaje", "Cuerpo del mensaje");

Nos vamos de nuevo a nuestra hoja de cálculo y pulsamos el botón Enviar > Enviar e'mails. Ahora sí que habrá enviado un email a cada usuario de la lista con lo que pusimos en la función enviarMail

(Si el e-mail de un usuario no existe, se nos enviará un correo de vuelta informándonos del error).

No hay comentarios:

Publicar un comentario