GOOGLE App Script
Introducción
Los servicios de Apps Script proporcionan formas para que tu secuencia de comandos
acceda a los datos en Google y en sistemas externos. Estos servicios están integrados en
el entorno de Apps Script, por lo que no tienes que importarlos ni implementar controles de
autorización por tu cuenta. Los servicios se expresan como objetos globales con métodos
asociados, de manera similar a los objetos de JavaScript, como Math.
Los servicios de Apps Script incluyen los siguientes:
Los servicios de Google son servicios que te permiten acceder a los datos de las apps de
Google Workspace, como Drive, Gmail y Hojas de cálculo, y otras apps de Google, como
Maps y Translate.
Los servicios de servicios públicos son aquellos que no están conectados a un producto
de Google en particular. Te permiten hacer cosas como información de registro, crear
HTML, comprimir datos y más.
Javasript generalidades
Separación de instrucciones: es a través del carácter punto y coma (;) y la segunda es a
través de un salto de línea.
Declaración de variables: let y var (no se indica tipo de dato)
Mostrar mensajes por consola: [Link]( “mensaje o variable string aquí”)
Tipos de datos: boolean, para los datos boleanos. (True o false) number, para los
numéricos. string, para las cadenas de caracteres. object, para los objetos.
Declaración de funciones: usando la palabra function nombreFunción ( secuencia de
parámetros separados por coma) Ej: function sumar( num1,num2){ return num1+num2}
(no se indica tipo de retorno)
Arreglos:
o Creación arreglo vacio: var miAreglo= new Array(); o var miArreglo= []
o Creación arreglo de tamaño N: var miAreglo= new Array(N);
o Creación con N datos: var miArreglo = [ dato1, dato2, dato3, …, datoN]
o Guardar un dato en posición i de arreglo: miArreglo[i]=dato;
o Podemos guardar distintos datos en cada casilla del arreglo: Ej:
miArray[0] = "[Link]" ; miArray[1] = 1275; miArray[1] = 0.78 ;
miArray[2] = true
o Obtener Tamaño de un arreglo: [Link]
o Recorrido de arreglo con for por posición del arreglo:
for(i=0; i< [Link]; i++){
[Link]( miArray[i])
}
o Recorrido de arreglo con for …of: (se asocia al elemento dato un elemento del
arreglo sin tener control de su ubicación por posición)
for( dato of miArreglo) {
[Link]( dato)
}
GOOGLE App Script
Activadores
Los activadores permiten que Apps Script ejecute una función automáticamente cuando se produce
un evento determinado, como abrir un documento. Los activadores simples son un conjunto de
funciones reservadas integradas en Apps Script, como la función onOpen(e), que se ejecuta cuando
un usuario abre un archivo de Documentos, Hojas de cálculo, Presentaciones o Formularios de
Google. Los activadores instalables ofrecen más capacidades que los activadores simples, pero
deben activarse antes de usarlos. Para ambos tipos de activadores, Apps Script pasa la función
activada a un objeto de evento que contiene información sobre el contexto en el que ocurrió el
evento.
Primeros pasos
Para usar un activador simple, crea una función que use uno de estos nombres de
funciones reservados:
onOpen(e) se ejecuta cuando un usuario abre una hoja de cálculo, un documento, una
presentación o un formulario que el usuario tiene permiso para editar.
onInstall(e) se ejecuta cuando un usuario instala un complemento de editor desde
Documentos, Hojas de cálculo, Presentaciones o Formularios de Google.
onEdit(e) se ejecuta cuando un usuario cambia un valor en una hoja de cálculo.
onSelectionChange(e) se ejecuta cuando un usuario cambia la selección en una hoja de
cálculo.
doGet(e) se ejecuta cuando un usuario visita una app web o un programa envía una solicitud
HTTP GET a una app web.
doPost(e) se ejecuta cuando un programa envía una solicitud POST HTTP a una app web.
El parámetro e en los nombres de las funciones anteriores es un objeto de evento que
se pasa a la función. El objeto contiene información sobre el contexto que causó la
activación del activador, pero su uso es opcional. El objeto evento depende del
contexto, puede ser un formulario, hoja de cálculo, u otro objeto y sus atributos
dependerán de ese objeto.
GOOGLE App Script
Class DriveApp
Permite que las secuencias de comandos creen, busquen y modifiquen archivos y carpetas
en Google Drive personal. Para acceder a los archivos o las carpetas de las unidades
compartidas, usar el servicio avanzado de Drive.
Propiedad Tipo Descripción
Access Access Una enumeración que representa a las clases de usuarios que pueden
acceder a un archivo o una carpeta, además de los usuarios individuales
a los que se les otorgó acceso de forma explícita.
Permission Permission Una enumeración que representa los permisos otorgados a los usuarios
que pueden acceder a un archivo o una carpeta, además de los usuarios
individuales a los que se les otorgó acceso de forma explícita.
Class DriveApp y Folder
Tipo de datos
Método Descripción breve
que retorna
createFile(blob) File Crea un archivo en la raíz de la unidad de Drive
del usuario a partir de un
elemento Blob determinado de datos arbitrarios.
createFile(name, content) File Crea un archivo de texto en la raíz de la unidad
de Drive del usuario con el nombre y el contenido
dados. Arroja una excepción si content supera
los 50 MB.
createFolder(name) Folder Crea una carpeta en la raíz de la unidad de Drive
del usuario con el nombre determinado.
getFileById(id) File Obtiene el archivo con el ID determinado.
getFolders() FolderIterator Obtiene una colección de todas las carpetas en la
unidad de Drive del usuario.
getFoldersByName(name) FolderIterator Obtiene una colección de todas las carpetas de la
unidad de Drive del usuario que tienen el nombre
determinado.
GOOGLE App Script
Class Folder
Una carpeta en Google Drive Se puede acceder a las carpetas o crearlas desde DriveApp.
Además de las funciones antes mencionadas compartidas para DriveApp y Folder se suman:
Tipo de datos
Método Descripción breve
que retorna
getId() String Obtiene el ID de Folder.
getName() String Obtiene el nombre de Folder.
getUrl() String Obtiene la URL que se puede usar para abrir el
archivo Folder en una app de Google, como Drive
o Documentos.
getSize() Integer Obtiene la cantidad de bytes que se usan para
almacenar el Folder en Drive.
getOwner() User Obtiene el propietario de este Folder.
getViewers() User[] Obtiene la lista de lectores y comentaristas de
este Folder.
getEditors() User[] Obtiene la lista de editores para este Folder.
moveTo(Folder destination) Folder Mueve este elemento a la carpeta de destino
proporcionada.
setName(name) Folder Establece el nombre de Folder.
getFolders() FolderIterator Obtiene una colección de todas las carpetas que
son secundarias de la carpeta actual.
getFiles() FileIterator Obtiene una colección de todos los archivos
secundarios de la carpeta actual.
addEditor(emailAddress) Folder Agrega el usuario determinado a la lista de
editores del Folder.
addEditor(user) Folder Agrega el usuario determinado a la lista de
editores del Folder.
addEditors(emailAddresses) Folder Agrega el array de usuarios determinado a la lista
de editores del Folder.
addViewer(emailAddress) Folder Agrega el usuario determinado a la lista de
visualizadores de Folder.
addViewer(user) Folder Agrega el usuario determinado a la lista de
visualizadores de Folder.
addViewers(emailAddresses) Folder Agrega el array de usuarios deter
getAccess(email) Permission Obtiene el permiso otorgado al usuario
determinado.
getAccess(user) Permission Obtiene el permiso otorgado al usuario
determinado.
getDateCreated() Date Obtiene la fecha en que se creó el Folder.
getEditors() User[] Obtiene la lista de editores para este Folder.
removeViewer(emailAddress) Folder Quita al usuario determinado de la lista de
lectores y comentaristas del Folder.
removeViewer(user) Folder Quita al usuario determinado de la lista de
lectores y comentaristas del Folder.
removeEditor(emailAddress) Folder Quita al usuario determinado de la lista de
editores del Folder.
removeEditor(user) Folder Quita al usuario determinado de la lista de
editores del Folder.
GOOGLE App Script
Class File
Un archivo en Google Drive Se puede acceder a los archivos o crearlos desde DriveApp. Tenemos
los mismos métodos y algunos adicionales: como por ejemplo
makeCopy(name, destination) File Crea una copia del archivo en el directorio de destino y le
asigna el nombre proporcionado.
Class FolderIterator
Un objeto que permite que las secuencias de comandos iteren en una colección de carpetas
potencialmente grande. Se puede acceder a los iteradores de carpetas
desde DriveApp, File o Folder.
Tipo de datos
Método Descripción breve
que se muestra
getContinuationToken() String Obtiene un token que se puede usar para reanudar
esta iteración más adelante.
hasNext() Boolean Determina si la llamada a next() mostrará un
elemento.
next() Folder Obtiene el siguiente elemento de la colección de
archivos o carpetas.
Class FileIterator
Un iterador que permite que las secuencias de comandos iteren en una colección de archivos
potencialmente grande. Se puede acceder a los iteradores de archivos desde DriveApp o Folder.
Tipo de datos
Método Descripción breve
que se muestra
getContinuationToken() String Obtiene un token que se puede usar para reanudar
esta iteración más adelante.
hasNext() Boolean Determina si la llamada a next() mostrará un
elemento.
next() File Obtiene el siguiente elemento de la colección de
archivos o carpetas.
Class Ui
Una instancia del entorno de la interfaz de usuario de una app de Google que permite que la
secuencia de comandos agregue funciones como menús, diálogos y barras laterales. Una
secuencia de comandos solo puede interactuar con la IU de la instancia actual de un editor abierto
y solo si la secuencia de comandos está vinculada al contenedor del editor.
Propiedad Tipo Descripción
Button Button Una enumeración que representa botones de diálogo localizados
predeterminados que muestra
una alerta o [Link]() para indicar en qué botón
de un diálogo hizo clic el usuario.
ButtonSet ButtonSet Una enumeración que representa conjuntos predeterminados y localizados
de uno o más botones de diálogo que se pueden agregar a una alerta o
una instrucción
GOOGLE App Script
Tipo de datos que
Método Descripción breve
se muestra
alert(prompt) Button Abre un cuadro de diálogo en el editor del usuario
con el mensaje dado y un botón "Aceptar".
alert(prompt, buttons) Button Abre un cuadro de diálogo en el editor del usuario
con el mensaje y el conjunto de botones
especificados.
alert(title, prompt, buttons) Button Abre un cuadro de diálogo en el editor del usuario
con el título, el mensaje y el conjunto de botones
proporcionados.
prompt(prompt) PromptResponse Abre un cuadro de diálogo de entrada en el editor
del usuario con el mensaje dado y un botón
"Aceptar".
prompt(prompt, buttons) PromptResponse Abre un cuadro de diálogo de entrada en el editor
del usuario con el mensaje y el conjunto de
botones especificados.
prompt(title, prompt, buttons) PromptResponse Abre un cuadro de diálogo de entrada en el editor
del usuario con el título, el mensaje y el conjunto
de botones determinados.
PromptResponse: Es una representación en texto de la respuesta del usuario.
Enum Button
Una enumeración que representa los botones de diálogo localizados predeterminados que muestra
un alert o un [Link]() para indicar en qué botón del diálogo hizo clic el
usuario. Estos valores no se pueden configurar; para agregar botones a una alert o prompt,
usa ButtonSet en su lugar.
Los botones pueden ser:
Propiedad Tipo Descripción
CLOSE Enum El botón de cierre estándar que se muestra en la barra de título de
todos los diálogos. Este botón no se agrega de manera explícita a
un diálogo y no se puede quitar.
OK Enum Un botón "Aceptar", que indica que una operación debe continuar.
CANCEL Enum Un botón “Cancelar”, que indica que una operación no debe
continuar.
YES Enum Un botón "Sí", que indica una respuesta positiva a una pregunta.
NO Enum Un botón "No", que indica una respuesta negativa a una pregunta
GOOGLE App Script
Class SpreadsheetApp
Este servicio permite que las secuencias de comandos creen archivos de Hojas de cálculo de Google, accedan
a ellos y los modifiquen. Consulta también la guía para almacenar datos en hojas de cálculo.
A veces, las operaciones de la hoja de cálculo se agrupan para mejorar el rendimiento, como cuando se
realizan varias llamadas a un método. Si quieres asegurarte de que todos los cambios pendientes se realicen
de inmediato (por ejemplo, para mostrar información a los usuarios mientras se ejecuta una secuencia de
comandos), llama a [Link]().
Algunos métodos:
Propiedad Tipo Descripción
create(name) Spreadsheet Crea una hoja de cálculo nueva con el
nombre dado.
create(name, rows, columns) Spreadsheet Crea una hoja de cálculo nueva con el
nombre dado y el número especificado de
filas y columnas.
flush() void Aplica todos los cambios pendientes de la
hoja de cálculo.
getActive() Spreadsheet Muestra la hoja de cálculo activa en este
momento o null si no hay ninguna.
getActiveRange() Range Muestra el rango seleccionado en la hoja
activa o null si no hay un rango activo.
getActiveSheet() Sheet Obtiene la hoja activa en una hoja de
cálculo.
getActiveSpreadsheet() Spreadsheet Muestra la hoja de cálculo activa en este
momento o null si no hay ninguna.
open(file) Spreadsheet Abre la hoja de cálculo que corresponde al
objeto de archivo determinado.
openById(id) Spreadsheet Abre la hoja de cálculo con el ID
especificad
openByUrl(url) Spreadsheet Abre la hoja de cálculo con la URL
especificada.
getUi() Ui Muestra una instancia del entorno de
interfaz de usuario de la hoja de cálculo
que permite que la secuencia de
comandos agregue funciones como
menús, diálogos y barras laterales.
GOOGLE App Script
Class Sheet
Acceder a hojas de cálculo y modificarlas Las operaciones comunes consisten en cambiar el
nombre de una hoja y acceder a los objetos de rango desde la hoja.
Tipo de datos que
Método Descripción breve
se muestra
getSheetId() Integer Muestra el ID de la hoja representada
por este objeto.
getSheetName() String Muestra el nombre de la hoja.
activate() Sheet Activa esta hoja.
clear() Sheet Borra la hoja de información de
formato y contenido.
getDataRange() Range Muestra un Range que corresponde a
las dimensiones en las que están
presentes los datos.
getName() String Muestra el nombre de la hoja.
getRange(a1Notation) Range Muestra el rango especificado en la
notación A1 o A1:C1.
getRange(row, column) Range Muestra el rango con la celda superior
izquierda en las coordenadas
proporcionadas.
getRange(row, column, numRows) Range Muestra el rango con la celda superior
izquierda en las coordenadas
determinadas y con el número
determinado de filas.
getRange(row, column, numRows, numColumns) Range Muestra el rango con la celda superior
izquierda en las coordenadas
determinadas con el número
determinado de filas y columnas.
setName(name) Sheet Establece el nombre de la hoja.
appendRow(rowContents) Sheet Agrega una fila en la parte inferior de
la región de datos actual en la hoja.
Class Range
Accede a los rangos de las hojas de cálculo y modifícalos. Un rango puede ser una sola celda en
una hoja o un grupo de celdas adyacentes en una hoja.
Tipo de datos
Método que se muestra
Descripción breve
activate() Range Establece el rango especificado como active
range, con la celda superior izquierda en el
rango como current cell.
getValue() Object Muestra el valor de la celda superior izquierda
en el rango.
Si el rango es una sola celda recupera su
contenido.
getValues() Object[][] Muestra la cuadrícula rectangular de valores
para este rango.
getNumRows() Integer Muestra la cantidad de filas en este rango.
getNumColumns() Integer Muestra el número de columnas en este
rango.
setValue(value) Range Establece el valor del rango. El valor puede
ser numérico, string, booleano o fecha. Si
comienza con '=', se interpreta como una
fórmula.
GOOGLE App Script
setValues(values) Range Establece una cuadrícula rectangular de
valores (debe coincidir con las dimensiones
de este rango).
getBackground() String Muestra el color de fondo de la celda superior
izquierda del rango (por ejemplo, '#ffffff').
getBackgroundObject() Color Muestra el color de fondo de la celda superior
izquierda del rango.
setBackground(color) Range Establece el color de fondo de todas las
celdas en el rango en la notación CSS
(como '#ffffff' o 'white').
setBackgroundRGB(red, green, blue) Range Establece el fondo en el color determinado
mediante valores RGB (números enteros
entre 0 y 255 inclusive).
GOOGLE App Script
Class MailApp
Envía correos electrónicos.
Este servicio permite a los usuarios enviar correos electrónicos con control total sobre su
contenido. A diferencia de GmailApp, el único propósito de MailApp es enviar correos
electrónicos. MailApp no puede acceder a la bandeja de entrada de Gmail de un usuario.
Los cambios en las secuencias de comandos escritas con GmailApp tienen más
probabilidades de activar una solicitud de nueva autorización de un usuario que las
secuencias de comandos de MailApp.
Tipo de datos
Método Descripción breve
que se muestra
getRemainingDailyQuota() Integer Muestra la cantidad de destinatarios
a los que puedes enviar correos
electrónicos para el resto del día.
sendEmail(message) void Envía un mensaje de correo
electrónico.
sendEmail(recipient, subject, body) void Envía un mensaje de correo
electrónico.
sendEmail(recipient, subject, body, options) void Envía un correo electrónico con
argumentos opcionales.
sendEmail(to, replyTo, subject, body) void Envía un mensaje de correo
electrónico.
Parámetros Avanzados para el parámetro options:
Nombre Tipo Descripción
attachments BlobSource[] un array de archivos para enviar con el correo electrónico
bcc String una lista separada por comas de direcciones de correo electrónico a
Cco (con copia oculta a)
body String el cuerpo del correo electrónico
cc String una lista de direcciones de correo electrónico separadas por comas
para incluir en Cc (con copia a )
htmlBody String Si se configura, los dispositivos capaces de renderizar HTML lo
usarán en lugar del argumento del cuerpo obligatorio. Puedes
agregar un campo opcional inlineImages en el cuerpo HTML si tienes
imágenes intercaladas para tu correo electrónico.
inlineImages Object un objeto JavaScript que contiene una asignación de la clave de
imagen (String) a los datos de la imagen (BlobSource); esto supone
que se usa el parámetro htmlBody y que contiene referencias a
estas imágenes en el formato <img src="cid:imageKey" /> (consulta
el ejemplo)
name String el nombre del remitente del correo electrónico. La configuración
predeterminada es el nombre de usuario del remitente.
noReply Boolean true si el correo electrónico se debe enviar desde una dirección
genérica que no recibe respuestas, a fin de evitar que los
destinatarios respondan los correos electrónicos. Esta opción solo es
posible para cuentas de Google Workspace, no para usuarios de
Gmail.
replyTo String una dirección de correo electrónico para usar como dirección de
respuesta predeterminada (configuración predeterminada: la
dirección de correo electrónico del usuario) Si noReply está
configurado como true, se ignora replyTo.
subject String el asunto del correo electrónico
to String la dirección de correo electrónico del destinatario o una lista
separada por comas de direcciones de correo electrónico que serán
los destinatarios
GOOGLE App Script
Ejemplo:
Creando un PDF desde archivo (hoja de cálculo)
Exportar un rango
Una última cosa que podemos agregar al código anterior es la habilidad de exportar un rango específico.
Para esto debemos adicionar lo
siguiente:
1. Llamamos el rango deseado, en
nuestro caso va a ser el rango
activo
(var rango=[Link]())
2. Extraemos la columna inicial y
final, y la fila inicial y final del
rango
3. Agregamos estos valores a
nuestro url con los parámetros
r1,r2,c1 y c2.
GOOGLE App Script
Ejemplo: