Desarrollando complemento en Google Apps Script – nivel básico I

Bienvenidos a una nueva sesión de Google Apps Script. En el post anterior tuvimos una primera toma de contacto con esta tecnología utilizando el propio entorno de desarrollo. En esta ocasión vamos a empezar a desarrollar un complemento básico para Hojas de Cálculo de Google.

Funcionalidades del complemento

Bueno, como comentamos en el post anterior vamos a desarrollar un complemento ya existente: Yet Another Mail Merge. Si habéis hecho los deberes ya sabréis las funcionalidades que ofrece, pero para aquellos que no se lo hayan mirado aquí están:

  • Verificar cuota restante: con una cuenta de gmail se pueden enviar un máximo de 100 correos electrónicos diarios. Es lo que se denomina como la cuota diaria. Si ya has enviado esa cantidad de mensajes en el día de hoy no podrás utilizar esta aplicación para enviar mensajes hasta el día siguiente.

cuota_restante_yamm

  • Importar grupo de contactos: se van a sincronizar los contactos de tu cuenta de Google y se importará toda la información (nombre, e-mail, etc). Puedes seleccionar diferentes grupos de contactos.

importar contactos_yamm

  • Combinar e-mails: te da la opción de seleccionar un borrador de entre todos los que tienes en tu cuenta de Gmail. Este borrador incluirá los campos de la hoja de cálculo entre los caracteres <<>> (por ejemplo, <<First Name>>) para sustituirlos por el valor que corresponda de la hoja.

borrador_gmail

Se enviará un mensaje por cada fila existente en la hoja de cálculo. Se puede configurar el nombre del remitente e incluso comprobar cuándo abre el destinatario el mensaje recibido.

enviar_mails_yamm

Verificando cuota restante – recursos a utilizar

Implementar esta funcionalidad es sin duda la parte más sencilla de todas las que tendrá este complemento. El programa hace una llamada a uno de los servicios de Google Script (el de Mail) y le pregunta cuántos mensajes nos quedan por enviar aún en el día de hoy. Nuestro trabajo consiste en recoger ese valor y mostrarlo en un cuadro de diálogo para informar al usuario.

Como ya dijimos en post anteriores, Google pone a disposición de los desarrolladores varias API’s y muchísima documentación sobre su composición y uso. Esto nos va a permitir crear diferentes tipos de complemento muy bien acabados que de otro modo no sería posible.

documentation_apps_script

Para poder traernos la cuota restante tenemos que llamar a la clase MailApp. Este servicio, además, permite el envío de correos en nombre de la persona que ejecuta el complemento. Hay que tener en cuenta que, a diferencia del servicio de Gmail (no, no es el mismo), su único propósito es el envío de correo electrónico. Esto quiere decir que esta clase no tiene recursos para acceder a la cuenta de Gmail de un usuario.

mailapp_service

Esta clase, MailApp, tiene una función en concreto que nos interesa especialmente, que es getRemainingDailyQuota(). Esta función devuelve un número entero: la cantidad de correos electrónicos que le quedan al usuario por enviar en el resto del día. Esta cantidad se basa en el número de destinatarios a los que hayas enviado e-mails. Imagina que en el día de hoy has enviado un único correo electrónico, pero en el cuadro para indicar los destinatarios has escrito tres: tu padre, tu madre y tu hermano. Eso quiere decir que no has enviado un único correo, sino tres, por lo que tu cuota diaria restante sería 97. Ese es el número que te devolvería esta función.

De acuerdo, ahora que tenemos claro esto vamos con la segunda parte del trabajo: mostrar un mensaje que indique la cantidad que nos ha devuelto la función anterior. Para ello, vamos a utilizar otra clase diferente: SpreadsheetApp.

La clase SpreadsheetApp es la clase padre del servicio Spreadsheet. Permite a los usuarios abrir archivos de hojas de cálculo y crear otros nuevos, entre otras cosas.

spreadshetApp_class

La función que nos interesa de aquí es getUi(). Esta función devuelve una instancia de la interfaz de usuario de la propia hoja de cálculo. Interfaz que utilizaremos para mostrar un cuadro de diálogo. Una vez recogida y guardada en una variable, tenemos que tratarla para mostrar el cuadro del que hablamos.

La instancia de la interfaz es precisamente de la clase Ui (user interface). Esta clase tiene diversos métodos para abrir diferentes tipos de diálogo, crear menús de complemento e incluso barras laterales.

class_ui

La función que nos interesa es uno de los métodos “alert()” de la clase Ui. Y digo uno de ellos porque en esta clase tenemos el método “alert()” sobrecargado, lo que significa que hay varias funciones con el mismo nombre pero cada una de ellas recibe argumentos diferentes. El que vamos a utilizar es alert(title, prompt, buttons), que abre un cuadro de diálogo en la hoja de cálculo usuario con el título, el mensaje y el conjunto de botones a utilizar, todos recibidos como argumentos de la función. Los dos primeros son de tipo cadena de texto, pero el tercero es de tipo ButtonSet.

La clase ButtonSet es un tipo enumerado (enum) que representa un conjunto de botones utilizados en los cuadros de diálogo predeterminados. De esta manera nos podemos encontrar con el conjunto “Ok – Cancel” para confirmar una acción a realizar, o el conjunto “Yes – No” para responder a una pregunta concreta, etc. El mensaje que vamos a mostrar es informativo por lo que usaremos el ButtonSet “Ok”, para que el usuario confirme que se da por enterado.

enum_buttonset

Verificando cuota restante – script y ejecución

Una vez explicada la teoría, pasamos a la práctica. Estad atentos a los comentarios en el código, os ayudarán a entenderlo todo mejor.

Para abrir el proyecto de la semana anterior, buscad en vuestro Drive la hoja de cálculo sobre la que trabajasteis. Abridla e iros al menú “Herramientas” > “Editor de secuencias de comandos…” y encontraréis vuestro proyecto tal y como lo dejasteis. Borradlo todo y escribid lo siguiente:

Como habréis supuesto, la función principal es “verifyQuota()”, que es la que se encarga de recoger la cuota y llamar a la función que muestra el mensaje. En la barra de herramientas debéis seleccionar la función a ejecutar y pulsad en el botón “Ejecutar”, que tiene forma de triángulo.

No vais a ver nada en el entorno de desarrollo de Apps Script, si queréis ver vuestra creación tendréis que iros a la hoja de cálculo: Habrá aparecido un mensaje muy parecido (por no decir igual) al que muestra el complemento Yet Another Mail Merge.

verify_quota_own

Qué hemos visto y qué viene

Hemos utilizado diferentes servicios de Google para recoger información e instancias de su entorno. Hemos mostrado un mensaje de diálogo en una hoja de cálculo de Google con el estilo propio de ellos y hemos terminado la primera de las funcionalidades del complemento.

Sé que me vais a decir que esto es muy poco, que avanzamos muy lento y que queréis cosas más hardcore, pero tened en cuenta que estamos empezando desde la base y hay que amoldarse a todos y cada uno de vosotros. Además, si enseñara a realizar las otras funcionalidades el post sería kilométrico y eso no puede ser porque al final os aburriríais de tanto leer.

No desesperéis porque en la segunda parte enseñaremos la segunda de las funcionalidades: importar grupos de contactos. Pero no penséis que será tan fácil como esta, esta tendrá bastante más envergadura. Aprenderemos a hacer cuadros de diálogo personalizados, utilizando HTML y CSS y Javascript, y también a traernos información del lado del servidor. Estoy seguro de que os gustará.

¡No faltéis la semana que viene!

0 Comentarios

Contesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

©2017 Codictados Comunidad libre para el aprendizaje de codigo Online

o

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?