
Google Apps Scripts: Automatización y eficiencia en el ecosistema de Google
Introducción
En el mundo de la tecnología actual, la capacidad de eficiencia, automatización e integración de herramientas son fundamentales para poder mejorar los tiempos en procesos de trabajo, y una herramienta que permite esto que no es muy aprovechada en las organizaciones o equipos de trabajo es: Google Apps Script.
Esta herramienta permite automatizar procesos, integrar servicios y crear soluciones personalizadas dentro del ecosistema de Google Workspace. Ofrece un entorno de desarrollo en el navegador, por lo que se puede usar fácilmente sin la necesidad de instalar nada.
En este blog se explicará qué es, cómo funciona y por qué puede convertirse en un aliado para mejorar la productividad en un flujo de trabajo.
¿Qué es Google Apps Script?
Google Apps Script es una plataforma de desarrollo serverless la cual utiliza JavaScript como su lenguaje de programación, lo cual libera la necesidad de instalar software adicionales o mantener servidores.
Esta plataforma permite automatizar de forma personalizada los flujos de trabajo, integrando las diferentes herramientas que ofrece Google de tal forma que permite realizar múltiples conexiones entre componentes para agilizar la comunicación de tareas.
Algunas de las herramientas que se pueden trabajar son:
- Google Sheets
- Google Docs
- Gmail
- Google Drive
- Google Forms
- Google Calendar
Creando script sencillos es posible crear funciones personalizadas, automatizar tareas repetitivas, conectar servicios externos mediante APIs y desarrollar pequeñas aplicaciones internas que permitan optimizar procesos de trabajo.
¿Cuál es su relevancia?
En muchas organizaciones o equipos de trabajo se pierde gran parte del tiempo realizando tareas manuales como:
- Copiar información entre hojas de cálculo
- Enviar correos repetitivos
- Generar reportes periódicos
- Procesar datos de formularios
Con Google Apps Script se puede automatizar estos procesos reduciendo errores humanos y dejando tiempo para tareas de mayor valor. Además, su integración nativa con Google Workspace lo convierte en una herramienta especialmente útil para empresas que ya utilizan estas plataformas como parte de su operación diaria.
Principales ventajas
Se han mencionado algunos de los beneficios que ofrece esta herramienta, pero vamos a listarlos más claramente:
- Automatización de tareas repetitivas: Permite automatizar tareas manuales permitiendo reducir tiempo y carga operativa.
- Integración entre herramientas de Google: Facilita la comunicación entre las distintas aplicaciones que ofrece el ecosistema de Google, permitiendo crear flujos de trabajo inteligentes.
- Desarrollo con Javascript: Siendo uno de los lenguajes de programación más utilizados, no es necesario para muchos desarrolladores el aprender esta tecnología desde cero, además de poder apoyarse de la documentación de Google.
- Conexión con servicios externos: Logrando la conexión con APIs externas, amplía las posibilidades de integración con sistema de gestión empresarial, plataformas de análisis de datos, servicios de notificación, sistemas de CRM.
- Autenticación invisible: Utiliza el sistema de OAuth y permisos de Google, por lo que la autenticación se gestiona automáticamente a través de la cuenta del usuario.
- Herramienta gratuita: Estando incluida en el ecosistema de Google sin costos adicionales, pero estando sujeto a cuotas y límites diarios establecidos.
- Serverless: Al funcionar bajo un modelo serverless, Google gestiona la infraestructura, el escalado y la ejecución.
¿Cómo se desarrolla en Apps Script?
Para tener un acercamiento a cómo se puede trabajar con Google Apps Script, se mostrará a continuación una solución para un mini CRM automatizado de prospección. En este ejemplo, se construirá un sistema que detecta correos de clientes potenciales, los organizara en una hoja de calculo, notificará al equipo por Slack y permitirá medir los datos mediante una interfaz personalizada.
Para este ejemplo, se va a realizar el siguiente flujo:
Correo recibido en Gmail
↓
Apps Script analiza el contenido
↓
Detecta palabras clave
↓
Registra en Google Sheets
↓
Notifica al equipo en Slack
↓
Equipo revisa oportunidad
↓
UI personalizada de métricas
1. Captura de Datos y Conexión de Servicios
Se tienen dos formas para poder empezar a realizar desarrollos dentro de esta plataforma, los cuales son:
- Container - bound: Está asociado directamente a un documento Google (Sheets, Docs, Forms), lo que permite extender las funcionalidades de estos documentos.

- Standalone: Creación de un archivo solitario dentro de Google drive que tiene la ventaja de poder conectarse a múltiples servicios.

Para este caso, se va a iniciar desde un Google Sheets simple, que tendrá los siguientes campos: Fecha, Cliente, Email, Asunto, Estado, Responsable.
Al seleccionar la extension de Apps scripts, se abrirá una nueva pestaña con un script inicial.

📌 Apps Script permite dividir el código en múltiples archivos .gs, pero todos comparten el mismo runtime. Esta organización ayuda a mantener el proyecto modular sin necesidad de configurar módulos o imports.
Para este caso, se va a partir confeccionando código que ayude a detectar correos recibidos con palabras claves como ´Cotización´, ´Proyecto´,´Desarrollo´,´Consulta´, tomando el asunto y contenido del correo, además del email del emisor.
Se debe conocer que para exponer servicios de Google mediante APIs internas, existen llamados que permiten interactuar directamente con estos servicios sin autenticación adicional como GmailApp, SpreadsheetApp o DriveApp.
Archivo: main.gs
function revisarCorreos() {
// Buscar correos recientes que aún no han sido leídos
const threads = GmailApp.search('is:unread newer_than:1d');
// Obtener la hoja donde se guardarán los leads
const hoja = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("Leads"); //Nombre de la hoja
threads.forEach(thread => {
const mensajes = thread.getMessages();
mensajes.forEach(msg => {
const asunto = msg.getSubject();
const mensaje = msg.getPlainBody();
const email = msg.getFrom();
// Verificar si el correo contiene palabras clave
if (contienePalabrasClave(asunto + mensaje)) {
// Registrar el lead en la hoja
registrarLead(hoja, email, asunto, mensaje);
// Notificar en Slack
notificarSlack(email, asunto);
// Marcar como leído para no procesarlo nuevamente al termino del flujo exitoso
msg.markRead();
}
});
});
}
function contienePalabrasClave(texto){
const palabras = [
"cotizacion",
"cotización",
"cotizar",
"proyecto",
"desarrollo",
"consultoria",
"consultoría",
"consulta",
"consultar"
];
texto = texto.toLowerCase();
return palabras.some(p => texto.includes(p));
}
Se agregará además, una función para registrar la información rescatada dentro de un Google Sheets, mapeando la información nueva recibida, añadiéndolo al flujo principal.
function registrarLead(hoja, email, asunto, mensaje){
hoja.appendRow([
new Date(), // fecha de registro
"", // nombre del cliente
email, // correo del cliente
asunto, // asunto del correo recibido
"Nuevo", // estado inicial del lead
"" // responsable
]);
}
2. Automatización mediante triggers
Existen los Simple Triggers y los installable Triggers.
La configuración de los Triggers puede realizarse entre dos opciones que se deben conocer:
- Simple Triggers: Se ejecutan automáticamente con nombres específicos, pero estos no pueden acceder a servicios externos. (ejemplo:
onOpen(),onEdit(),onInstall()) - Installable Triggers: Estos se configuran manualmente y permiten cosas como la ejecución programada, el acceso a APIs o la automatización avanzada.
Para conocer mejor sobre los Triggers, se realizará la configuración manual de uno de estos. Se debe dirigir al lado izquierdo del panel para abrir la barra lateral y seleccionar el menú Triggers, luego, seleccionar el botón “Add Trigger” de la parte inferior derecha.

Esto abrirá un pop up para configurar la información que se desea asociar al Triggers, desde que función del código se quiere activar, el tipo de Event Source, cada cuanto tiempo se va a activar, y su intervalo.
Para este caso, seleccionaremos la función ´revisarCorreos´, un Event-Source por Time-driven, cada 5 minutos.

Con esto se podrá observar en el panel el trigger agregado, y se observará información como su última activación, su porcentaje de error, y más si se abren los detalles.

3. Integración con APIs externas
Para la conexión de APIs externas se utiliza el servicio de script UrlFetchApp, el cuál permite realizar acciones como GET, POST, PUT y DELETE.
En este caso, se mostrará un ejemplo de integración a un canal de Slack mandando un payload según lo que se configuró en el flujo de trabajo que recibe la notificación dentro de Slack.
Archivo slackService.gs:
/* Integración con Slack con un Webhook*/
function notificarSlack(email, asunto){
const url = "SLACK_WEBHOOK_URL"; // reemplazar por webhook real
const payload = {
email_cliente: email,
asunto_correo: asunto,
fecha: new Date().toISOString()
};
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}

4. Creación de interfaces simples
Apps Script permite la creación de interfaces usando HTML, CSS y JavaScript, donde estas interfaces pueden mostrarse como barras laterales, cuadros de diálogos o hasta aplicaciones webs completas. Para este ejemplo se utilizará una barra lateral dentro de Google Sheets.
En un nuevo archivo se manejara la interfaz del usuario dentro de Google Sheets, donde cuando se abra la hoja del documento, se creará una nueva opción menú para acceder rápidamente al panel de métricas en una barra lateral.
Archivo ui.gs:
/* Menú personalizado */
function onOpen(){
const ui = SpreadsheetApp.getUi();
ui.createMenu("Panel CRM")
.addItem("Abrir panel de Métricas", "abrirCRM")
.addToUi();
}
/* Abrir panel */
function abrirCRM(){
const html = HtmlService
.createHtmlOutputFromFile("crm")
.setTitle("Panel");
SpreadsheetApp.getUi().showSidebar(html);
}
Además, para poder manejar y ver correctamente esta interfaz, se creará un archivo HTML para poder ver el panel.
Archivo crm.html:
<!DOCTYPE html>
<html>
<head>
<style>
body{font-family: Arial; padding:15px; }
h3{margin-top:0; }
.metric{background:#f5f7fb; padding:12px; border-radius:6px; margin-bottom:10px;}
.metric span{font-size:22px; font-weight:bold; color:#C45BAA;}
button{width:100%; padding:8px; background:#C45BAA; color:white; border:none; border-radius:4px; cursor:pointer;}
</style>
</head>
<body>
<h3>Métricas del CRM</h3>
<div class="metric">
Leads totales<br>
<span id="total">-</span>
</div>
<div class="metric">
Leads nuevos hoy<br>
<span id="hoy">-</span>
</div>
<div class="metric">
En revisión<br>
<span id="revision">-</span>
</div>
<div class="metric">
Cerrados<br>
<span id="cerrados">-</span>
</div>
<button onclick="cargar()">Actualizar métricas</button>
<script>
function cargar(){
google.script.run
.withSuccessHandler(mostrar)
.obtenerMetricas();
}
function mostrar(data){
document.getElementById("total").innerText = data.total;
document.getElementById("hoy").innerText = data.nuevosHoy;
document.getElementById("revision").innerText = data.enRevision;
document.getElementById("cerrados").innerText = data.cerrados;
}
window.onload = cargar;
</script>
</body>
</html>
Dentro del archivo principal, se agregará una función que devuelve métricas de los datos almacenados en la hoja, para que estos sean visibles desde la interfaz HTML según registros nuevos y sus estados.
Archivo main.gs:
//Función para el panel lateral
function obtenerMetricas(){
const hoja = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("Leads");
const datos = hoja.getDataRange().getValues();
// eliminar encabezado
datos.shift();
const hoy = new Date();
hoy.setHours(0,0,0,0);
let total = 0;
let nuevosHoy = 0;
let enRevision = 0;
let cerrados = 0;
datos.forEach(fila => {
const fecha = new Date(fila[0]);
const estado = fila[4];
total++;
if(fecha >= hoy){
nuevosHoy++;
}
if(estado === "En revisión"){
enRevision++;
}
if(estado === "Cerrado"){
cerrados++;
}
});
return {
total: total,
nuevosHoy: nuevosHoy,
enRevision: enRevision,
cerrados: cerrados
};
}
Con estos códigos, se podrá ahora apreciar dentro del documento de Google sheets una nueva opción en el menú, donde al presionarlo activara el script y abrirá el menú lateral.


5. Como funciona el Deploy
Aunque Apps Script ofrece múltiples tipos de deployment, también hay muchas automatizaciones internas que no requieren ser publicadas como aplicaciones web. En este caso, se utiliza un Container-bound, o un script vinculado a Google Sheets con triggers instalables, lo cual permite ejecutar la lógica automáticamente dentro del entorno de Google Workspace.
Los deploy sirven para volver público el script como un servicio externo, por lo que se explicará los diferentes tipos que existen y para que sirven cada uno:
- Web App: Permite publicar el script como una aplicación web accesible mediante URL. Algunos casos de uso que se podrían considerar para este son Dashboards, formularios personalizados, APIs simples o Apps internas.
- API Executable: Se utiliza cuando otras aplicaciones quieren ejecutar el script mediante API. Algunos casos podrían ser; Backend externo, integraciones con otros sistemas o automatizacion desde servidores.
- Add-on: Se utiliza para la creación de extensiones instalables para Google Workspace, sean como extension para Gmail, Sheets o Docs, que se publican en el Google Workspace Marketplace.
- Library: Este permite reutilizar el código entre múltiples proyectos, publicándolo como una librería importable.
Se debe tener en consideración que al terminar de configurar cualquiera de los deployment, se obtendrá un URL ya sea para abrir la aplicación web, acceder a la librería, o llamar a la API.




📌 Se debe considerar para la primera ejecución que se realice del Script, este va a pedir permisos a la cuenta de Google y a los aplicativos del workspace que son parte del flujo, por lo que es de esperar que aparezca un mensaje que requiera estos permisos.

6. Ejemplos de casos de uso
Si bien este patrón de automatización tiene la capacidad de ampliarse con clasificación automática con IA, análisis de leads, dashboard, seguimiento automático y demás, este mismo flujo se podría aplicar para otros escenarios como por ejemplo:
- Gestión de tickets de soporte
- Solicitudes internas
- Reclutamiento
- Gestión de proveedores
Existen más escenarios y flujos aplicables para cada uno según las preferencias que pueda presentarse para cada equipo o empresa, por lo que Google Apps Script permite transformar estas herramientas cotidianas en soluciones automatizadas que resuelven problemas reales.
Limitaciones a considerar
Se debe tener presente que si bien esta es una herramienta poderosa y útil para las organizaciones que son parte del Workspace de Google, esto también viene con ciertos limitantes según los planes que estos tengan, los cuales se deben tener presente para diseñar soluciones realistas:
- Cuotas de ejecución y tiempo:
- Tiempo de ejecución: Existe un máximo de tiempo de ejecución para un script estándar, el cual es de 6 minutos.
- Triggers: Existe un máximo de tiempo total por activador al día de generalmente 90 minutos en cuentas gratuitas, pero sube a 6 horas para cuentas de Google Workspace.
- Límites de servicios específicos:
Cada una de las herramientas que son parte del ecosistema de Google tiene sus propias restricciones diarias, por ejemplo:
- Gmail: Tiene un límite para envío de correos a 100 destinatarios en cuentas personales, y de 1500 en cuentas de Workspace.
- URL Fetch: Tiene un límite en el tamaño de datos y la cantidad de llamadas a APIs externas.
- Entorno:
- Bibliotecas: A diferencia de Node.js, no se puede importar los paquetes de
npmdirectamente, se debe usar las bibliotecas internas de Google Apps Script o servicios web externos. - Capacidad de procesamiento: Apps Script esta pensado para procesos de automatización, workflows e integraciones, pero no es ideal para procesos masivos. sistemas complejos o de alta concurrencia.
- Bibliotecas: A diferencia de Node.js, no se puede importar los paquetes de
Para poder asegurar que los procesos que se están planeando y su concurrencia esté dentro de las cuotas de cada cuenta, esta disponible esta información dentro de la documentación de Google.
Conclusión
Google Apps Script representa una solución potente para la automatización de procesos, integración de herramientas y desarrollo de soluciones personalizadas dentro del entorno de Google.
Su facilidad de uso, flexibilidad y capacidad de integración lo convierte en una ventaja valiosa tanto para desarrolladores como equipos que buscan mejorar su productividad de forma eficiente.
En un entorno tecnológico donde la automatización y la eficiencia son cada vez más importantes, esta herramienta se posiciona como una alternativa accesible y poderosa para ayudar a la gestión de procesos digitales para las organizaciones.
Entradas anteriores

Augmented Coding vs Vibe Coding
La IA genera código funcional, pero no garantiza seguridad. Aprende a usarla con criterio para construir software robusto, escalable y sin riesgos.

Kranear también es proteger: el proceso detrás de nuestra certificación ISO 27001
A finales de 2025, Kranio obtuvo la certificación ISO 27001 tras implementar su Sistema de Gestión de Seguridad de la Información (SGSI). Este proceso no fue solo un ejercicio de cumplimiento, sino una decisión estratégica para fortalecer cómo diseñamos, construimos y operamos sistemas digitales. En este artículo compartimos el proceso, los cambios internos que implicó y el impacto que tiene para nuestros clientes: mayor control, gestión estructurada de riesgos y una base más sólida para escalar sistemas con confianza.
