Introducción al mundo de AppScript

Desde hace algún tiempo quería escribir acerca de AppScript desde sus definiciones, características y casos de uso hasta notas de mi experiencia personal en los diferentes proyectos en los que he podido incursionar en esta plataforma.
Como siempre es debido hay que comenzar por el principio.

¿Que es AppScript?

Según la definición oficial de Google, Apps Script es una plataforma de JavaScript basada en la nube que le permite integrar tareas y automatizarlas en todos los productos de Google..
Sin mucha complicación podemos ver que AppScript es un producto de Google diseñado para agregar funcionalidades extras a otros productos de Google, algo así como un producto transversal a todos los demas.
Estas funcionalidades extras van a depender de cada producto o cada contexto en el que se encuentren, por ejemplo, para el popular servicio de correo de Google (Gmail) una funcionalidad extra sería aquella que permite enviar mensajes a diferentes remitentes en una hora específica, mientras que para otro producto de Google como son las hojas de cálculo una funcionalidad extra sería la de leer datos de varias casillas y ejecutar diferentes acciones en base a estos datos.

Incluso podríamos combinar ambas funcionalidades en nuestro proyecto y crear una función que se encargue de enviar mensajes a diferentes remitentes con la información recolectada de una o varias hojas de cálculo.
En resumen AppScript es una plataforma de desarrollo de aplicaciones en la que escribiendo simple código JavaScript y haciendo uso de las bibliotecas que Google nos proporciona para sus productos, podemos crear proyectos que interactúan tanto con el usuario como con dichos productos. Como siempre va a depender del propósito que le queramos dar o del problema que estemos tratando de solucionar con la plataforma AppScript.

Características de AppScript

Antes de ver a profundidad más acerca de la plataforma hay que dejar en claro algunos conceptos acerca de la misma:
  • JavaScript => Como se mencionó anteriormente el lenguaje base de esta plataforma es ni más ni menos que JavaScript montado sobre el famoso entorno de ejecución del lado del servidor V8 . En el siguiente enlace se pueden ver algunos ejemplos de código JavaScript en este entorno de ejecución: Enlace

  • Restricciones => Google nos proporciona información acerca de los límites que existen a la hora de utilizar los servicios de la plataforma AppScript. Estos límites se especifican en cuanto a cantidad de datos utilizados, tiempo de ejecución y recursos abarcados.
    Estos límites se conocen como quotas de uso y se puede ver la lista completa en el siguiente enlace: Quotas AppScript

  • Alcance => Si bien se ha mencionado que la plataforma esta hecha para agregar funcionalidades a productos de Google, es un hecho que mediante la API que nos proporcionan podemos integrar proyectos desarrollados en AppScript para servicios o aplicaciones externas.
    La API de AppScript se puede dividir en varios recursos: projects, projects.deployments, projects.versions, processes y scripts

Editor App Script

@zesertebe - Blog - introduction AppScript
Google nos proporciona un entorno de desarrollo para los proyectos App Script desde el cual tenemos varias secciones con las que gestionar cada proyecto. Estas secciones son:
  • 1. Información general: Detalles del proyectos y estadísticas de ejecuciones.

  • 2. Editor: El editor de código proporcionado por Google para crear, elminar, editar y guardar archivos tanto en extensión JS como HTML. Está construido sobre el el editor Monaco de Microsoft

  • 3. Activadores: Cualquier proyecto de AppScript puede ejecutar una o varias funciones internas mediante el uso de triggers o activadores. El objetivo de estos activadores es ejecutar una función dependiendo si se cumple una condición o no. Esta condición puede ser según tiempo (ejecutar la funcion cada 5 minutos, cada 2 horas, cada 3 dias, etc) o al producirse un evento en un producto de Google (por ejemplo, al diligenciar un formulario de Google se produce un evento y éste puede ser aprovechado para ejecutar una función)

  • 4. Ejecuciones: Cada vez que una función se ejecute ya sea manualmente desde el editor de código o a través de un activador o una llamada externa, se almacena un registro de dicha ejecución con algunos datos relacionados a la función ejecutada, el tiempo que tardó la función en ejecutarse, el origen de su ejecución, etc.

  • 5. Configuración del proyecto: Desde aquí se pueden realizar algunas configuraciones del proyecto como la zona horaria, permitir o no el entorno de ejecución V8 anteriormente mencionado, etc.

¿Como crear un proyecto?

Existen dos formas para crear un nuevo proyecto AppScript:
  1. Dirigiéndonos al sitio script.google.com
  2. A traves de un producto de Google que tenga esta opción como por ejemplo las hojas de cálculo o los formularios
Con la primera opción veremos la página de inicio de AppScript, aquí podremos tener acceso a todos los proyectos que hayamos creado o aquellos que nos han compartido otros usuarios.
También podremos utilizar el botón Nuevo proyecto para crear un proyecto nuevo desde 0:@zesertebe - Blog - introduction AppScript
Con la segunda opción crearemos un proyecto que se quedará vinculado al elemento que lo está creando (hojas de cálculo, formulario google, documento de Google). Con esta opción podremos hacer uso de algunas funcionalidades que hacen referencia al propio elemento que lo creó. Hay que mencionar que una vez este elemento desaparezca también lo hará el proyecto que contenía.
@zesertebe - Blog - introduction AppScript
Una vez creado nuestro proyecto veremos algo como lo siguiente:
@zesertebe - Blog - introduction AppScript

Editor

@zesertebe - Blog - introduction AppScriptVoy a explicar cada una de las partes principales del editor AppScript basado en la imagen:
  1. Aquí se ubican todos y cada uno de los archivos que forman parte de nuestro proyecto. De momento solo se permiten archivos con extension HTML y JS

  2. Con este botón podremos crear un nuevo archivo según su extensión. Podemos ubicar este archivo dentro de una carpeta simplemente indicando el nombre de la carpeta separado por una barra inclinada “/” de la siguiente forma: CarpetaRaiz/SubCarpeta/index.html => Esto crearía una carpeta llamada CarpetaRaiz en cuyo interior hay una carpeta llamada SubCarpeta que a su vez contiene un archivo llamado index.html
    Nota: El editor actual no nos permite visualizar estas estructuras de una forma cómoda, sin embargo con el uso de una extensión para el navegador podremos tener una mejor experiencia de usuario. En el siguiente enlace se describe a fondo la extensión y su uso:GASE

  3. Con este botón podremos IMPORTAR a nuestro proyecto otros proyectos AppScript que hayan sido creados como bibliotecas con el objetivo de utilizar funciones contenidas en ellos. Hay que aclarar que el código ejecutado a través de una biblioteca es mas lento que el codigo que se ejecuta de forma “nativa” y que nosotros hemos creado en nuestro proyecto.

  4. Si bien nada mas abrir un proyecto tenemos a nuestra disposición una gran variedad de utilidades por parte de las librerías que nos proporciona Google, en ocasiones necesitaremos hacer uso de funciones extras que no están incluídas de forma predeterminada. Para ello haremos uso de este botón que nos permite elegir que servicio queremos incluir en nuestro proyecto.

  5. Con este botón ejecutaremos una función que hayamos seleccionado. Las funciones que tenemos disponibles para ejecutar dependerán del archivo en el cual nos encontremos, es decir que solo podremos ejecutar funciones que se encuentren contenidas en el archivo en el cual nos encontremos en ese momento.

  6. La sección en done podremos escribir código tanto de JavaScript como de HTML. Contiene resaltados de sintaxis básico y sugerencias para el autocompletado de código entre otras utilidades. Podremos ver la lista completa presionando el botón F1

  7. Cuando realicemos la ejecución de una función podremos ver el resultado de dicha ejecución así como el resultado de todos los console.log y Logger.log que hayamos incluído en nuestro código

  8. Tenemos la opción de establecer que nuestro proyecto es una biblioteca para ser reutilzada en otros proyectos o que se trata de un servicio Web o como un complemento o como un servicio API. Todas estas opciones pueden ser creadas, modificadas y archivadas a través de ésta opción. En otro artículo veremos más a fondo este concepto.

  9. A través de este botón podremos compartir nuestro proyecto con otros usuarios Google para trabajar con ellos como colaboradores. Sin embargo es bueno mencionar que no es recomendable trabajar dos o más personas en un mismo código con esta opción ya que AppScript no cuenta con un sistema de control de versiones, por lo que puede suceder que los cambios de dos personas se sobreescribán mutuamente sin que haya un registro de esos cambios, haciendo que se pueda perder información de forma permanente. En estos casos es mucho mejor hacer uso de un sistema de control de versiones como GIT

Por el momento es suficiente para ser una breve introducción sin embargo aún falta mucho por explicar y ver. El siguiente paso es continuar con un tutorial de AppScript
Tambien dejo algunos recursos que pueden ser de utilidad para entender más acerca de esta plataforma:
  • La documentación oficial de AppScript proporcionada por Google
  • El blog oficial de desarrolladores de Google Workspace