⚡ Google Apps Script

Automatiza Google Workspace y usa Google Sheets como base de datos con JavaScript en la nube — completamente gratis con tu cuenta Google.

Teoría 5 Scripts de ejemplo Diccionario 18 términos Quiz 10/50

📖 Teoría

Google Apps Script (GAS) es una plataforma de scripting basada en JavaScript que corre directamente en los servidores de Google. Permite automatizar y extender las aplicaciones de Google Workspace como Gmail, Google Sheets, Drive, Calendar, Forms y Docs.

  • Sin instalación: el editor se abre directamente desde el navegador (Extensiones → Apps Script).
  • JavaScript en la nube: usa la misma sintaxis de JavaScript (ES5/ES6), sin TypeScript obligatorio.
  • Se ejecuta en servidores de Google: no depende del dispositivo del usuario.
  • Acceso completo a Google Workspace: Sheets, Gmail, Drive, Calendar, Forms, Docs, Slides.
  • Completamente gratuito con cualquier cuenta Google (personal o institucional).
  • Puede publicarse como Web App: convierte tu script en una API REST o una página web.

💡 ¿Cómo abrirlo? Abre cualquier Google Sheet → menú Extensiones → Apps Script. El editor se abre en una nueva pestaña con el código ligado a ese archivo.

Característica Google Apps Script Office Scripts VBA (Excel)
LenguajeJavaScript (ES6+)TypeScriptVisual Basic
PlataformaGoogle Workspace (web)Excel 365 (web/escritorio)Excel Windows/Mac
IntegraciónSheets, Gmail, Drive, Forms, CalendarExcel + Power AutomateSolo Office local
Gratuito✅ Gratis con Google❌ Requiere M365 de pago✅ Incluido en Office
EjecuciónNube (servidores Google)Nube (servidores Microsoft)Local (tu PC)
Web App / API✅ doGet / doPost❌ No❌ No
DificultadMedia (JS)Media-Alta (TypeScript)Media (VB)
Triggers automáticos✅ Múltiples tipos✅ Power Automate✅ Limitados (eventos)

💡 GAS es la mejor opción si ya usas Google Workspace y quieres automatizar sin pagar licencias adicionales.

Google Sheets puede funcionar como una base de datos ligera cuando se combina con Google Apps Script. Es ideal para proyectos pequeños y medianos que no necesitan la potencia de MySQL o PostgreSQL.

✅ Ventajas (Pros)

  • Completamente gratuito
  • Colaborativo — varios usuarios en tiempo real
  • Sin servidor — no necesitas hosting
  • Interfaz visual — cualquiera puede ver los datos
  • API REST nativa con GAS (doGet/doPost)
  • Historial de versiones automático
  • Integración con Google Forms para captura de datos

⚠️ Limitaciones (Cons)

  • Límite de 10 millones de celdas por archivo
  • Sin transacciones reales (no hay rollback)
  • Sin índices avanzados — búsquedas lentas en tablas grandes
  • No ideal para más de 100 000 filas
  • Cuotas de ejecución diaria de GAS (6 min por ejecución)
  • No hay JOIN como en SQL
  • Sin control de concurrencia avanzado
¿Cuándo usarlo? Para prototipos, formularios de registro escolar, inventarios pequeños, encuestas, apps internas de colegios o pymes, datos hasta ~100 000 filas. Para proyectos de producción con miles de usuarios, usa MySQL, PostgreSQL o Firebase.
Objeto / MétodoQué haceEjemplo de uso
SpreadsheetAppPunto de entrada para Google SheetsSpreadsheetApp.getActiveSpreadsheet()
getSheetByName()Obtiene una hoja por nombre.getSheetByName("Datos")
getDataRange()Obtiene el rango con datos de la hojasheet.getDataRange()
getValue()Lee el valor de una celdarange.getValue()
getValues()Lee un rango como array 2Drange.getValues()
setValue()Escribe un valor en una celdarange.setValue("Hola")
setValues()Escribe un array 2D en un rangorange.setValues(datos)
appendRow()Agrega una fila al final de la hojasheet.appendRow([col1, col2])
DriveAppGestiona archivos en Google DriveDriveApp.createFile()
MailAppEnvía correos desde GmailMailApp.sendEmail(to, subj, body)
UrlFetchAppHace peticiones HTTP (APIs externas)UrlFetchApp.fetch(url)
Logger.log()Imprime en el log de depuraciónLogger.log("mensaje")

Los triggers (disparadores) permiten ejecutar scripts automáticamente sin intervención humana. Son una de las características más poderosas de GAS.

  • onFormSubmit: se ejecuta cada vez que alguien envía un Google Form vinculado. Ideal para guardar respuestas, enviar confirmaciones por correo o procesar datos.
  • onEdit: se dispara cuando alguien edita manualmente una celda. Útil para validar datos, calcular totales o registrar cambios.
  • onOpen: se ejecuta cuando se abre el documento. Sirve para agregar menús personalizados.
  • Triggers por tiempo (time-based): se ejecutan a una hora fija (cada hora, cada día, cada semana). Perfectos para reportes automáticos o respaldos.
  • doGet / doPost (Web App): permiten que el script funcione como una API REST. doGet responde peticiones GET y doPost recibe datos de formularios o aplicaciones externas.
Ejemplo real: Un colegio usa Google Forms para registrar asistencia. Con onFormSubmit, GAS procesa automáticamente cada respuesta, actualiza Sheets y envía un correo de confirmación al estudiante — sin tocar ninguna línea de código a mano.

💻 Galería de Scripts

Ejemplos listos para copiar y pegar en el editor de Google Apps Script (Extensiones → Apps Script). Haz clic en cada pestaña para ver el código.

Escribe el texto "¡Hola desde Google Apps Script!" en la celda A1 de la hoja activa y muestra un mensaje en el log.

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue("¡Hola desde Google Apps Script!");
  Logger.log("Script ejecutado correctamente.");
}

💡 Ejecuta con el botón ▶ del editor. Verifica el resultado en la celda A1 de tu hoja.

Lee todos los datos de la hoja llamada "Datos" e imprime cada fila en el log de depuración.

function leerDatos() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Datos");
  var datos = sheet.getDataRange().getValues();
  datos.forEach(function(fila, i) {
    Logger.log("Fila " + (i+1) + ": " + fila.join(", "));
  });
}

💡 getValues() devuelve un array bidimensional: datos[fila][columna]. El log se ve en Ver → Registros de ejecución.

Agrega un nuevo cliente al final de la hoja "Clientes" con fecha, nombre, correo, ciudad y estado.

function agregarRegistro() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Clientes");
  var nuevoCliente = [new Date(), "Juan Pérez", "juan@email.com", "Medellín", "Activo"];
  sheet.appendRow(nuevoCliente);
  SpreadsheetApp.getUi().alert("¡Cliente agregado correctamente!");
}

💡 appendRow() siempre agrega al final, nunca sobreescribe datos existentes. El array debe tener un elemento por cada columna.

Envía un correo electrónico automático usando MailApp desde la cuenta Google vinculada al script.

function enviarCorreo() {
  var destinatario = "profe@escuela.edu.co";
  var asunto = "Reporte automático";
  var cuerpo = "Hola, este correo fue enviado automáticamente desde Google Apps Script.";
  MailApp.sendEmail(destinatario, asunto, cuerpo);
  Logger.log("Correo enviado a: " + destinatario);
}

💡 La cuenta gratuita de Google permite enviar hasta 100 correos por día. Para más destinatarios usa un bucle con forEach.

Función que busca un cliente por nombre en la hoja "Clientes" y devuelve su fila y datos. Patrón clave para usar Sheets como BD.

function buscarCliente(nombre) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Clientes");
  var datos = sheet.getDataRange().getValues();
  for (var i = 1; i < datos.length; i++) {  // i=1 para saltar encabezados
    if (datos[i][1] === nombre) {
      return { fila: i + 1, datos: datos[i] };
    }
  }
  return null;  // No encontrado
}

💡 datos[i][0] es la columna A, datos[i][1] es la columna B, etc. El índice i=1 salta la fila de encabezados.

📚 Diccionario

Google Apps Script
Plataforma de scripting de Google basada en JavaScript que permite automatizar y extender Google Workspace desde la nube.
SpreadsheetApp
Objeto principal de GAS para interactuar con Google Sheets. Es el punto de entrada para abrir, leer y modificar hojas de cálculo.
getActiveSpreadsheet()
Método que devuelve el objeto del archivo Google Sheets que está actualmente abierto y vinculado al script.
getSheetByName()
Método que devuelve una hoja específica del archivo por su nombre. Ej: .getSheetByName("Clientes").
getDataRange()
Devuelve un objeto Range que abarca todas las celdas con datos de la hoja, desde A1 hasta la última celda con contenido.
getValues()
Lee todos los valores de un Range y los devuelve como un array bidimensional JavaScript: array[fila][columna].
setValues()
Escribe un array bidimensional de datos en un rango de celdas. El array debe tener el mismo tamaño que el rango destino.
appendRow()
Agrega una nueva fila al final de la hoja con los valores del array proporcionado. No sobreescribe datos existentes.
Logger.log()
Función de depuración que imprime mensajes en el registro de ejecución del editor de Apps Script. Equivalente a console.log() en el navegador.
Trigger (disparador)
Mecanismo que ejecuta automáticamente una función cuando ocurre un evento específico (edición, envío de formulario, tiempo programado).
onFormSubmit
Trigger que se activa cada vez que alguien envía un Google Form vinculado al Spreadsheet. Recibe un objeto con las respuestas del formulario.
onEdit
Trigger que se ejecuta cuando un usuario edita manualmente una celda. Recibe un objeto con la celda modificada, el valor anterior y el nuevo.
MailApp
Servicio de GAS para enviar correos electrónicos desde la cuenta Gmail del propietario del script. Límite: ~100 correos/día en cuentas gratuitas.
DriveApp
Servicio de GAS para interactuar con Google Drive: crear carpetas, subir archivos, buscar documentos, gestionar permisos.
UrlFetchApp
Servicio que permite hacer peticiones HTTP a APIs externas (GET, POST) desde un script de GAS. Equivalente a fetch() en el navegador.
Web App (doGet/doPost)
Al publicar un script como Web App, la función doGet(e) maneja peticiones GET y doPost(e) maneja peticiones POST. Convierte el script en una API REST.
Quota (cuotas de uso)
Límites de ejecución de GAS para cuentas gratuitas: 6 minutos máximo por ejecución, 90 minutos/día de ejecuciones, 100 correos/día, 20 000 lecturas de URL/día.
Apps Script Editor
Editor de código integrado en Google Workspace, accesible desde Extensiones → Apps Script. Incluye depurador, log de ejecución y gestor de triggers.

🎬 Videos en Español

📌 Curso Google Apps Script desde 0 — Introducción

📌 Curso Google Apps Script — El objeto SpreadsheetApp

📌 Google Sheets + Apps Script — Crear Formulario con Botones

📌 Google Sheets y Apps Script — Pasos iniciales

🎯 Cuestionario

10 preguntas aleatorias del banco de 50. Calificación de 0 a 100.