Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Google Apps Script es una plataforma basada en JavaScript que permite automatizar y ampliar Google Workspace desde el navegador. Puede leer y modificar hojas de cálculo, enviar correos, crear documentos, organizar archivos de Drive, generar eventos de Calendar y conectar servicios externos mediante APIs.

Es especialmente útil si tu trabajo ya ocurre en Sheets, Gmail, Drive o Forms y necesitas una automatización con lógica propia. En este tutorial crearás un ejemplo funcional para enviar un correo desde una fila de Google Sheets y conocerás los permisos, activadores, límites y errores que debes tener en cuenta.

¿Qué es Google Apps Script?

Google Apps Script es un entorno de ejecución en la nube que usa JavaScript junto con servicios y objetos propios de Google. El código se escribe en un editor del navegador, se guarda en Google Drive y normalmente se ejecuta en servidores de Google, por lo que no necesitas instalar Node.js, un servidor local ni un entorno de desarrollo completo.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

No es un lenguaje independiente ni se limita a las macros de Sheets: es JavaScript dentro del runtime de Apps Script. Sus servicios integrados incluyen SpreadsheetApp, GmailApp, MailApp, DriveApp, DocumentApp y CalendarApp. También puedes realizar solicitudes HTTP con UrlFetchApp para consumir APIs externas.

La documentación oficial de Apps Script lo presenta como una herramienta para automatizar tareas, crear funciones personalizadas, añadir interfaces a archivos de Workspace, publicar aplicaciones web y desarrollar complementos.

Proyectos vinculados e independientes

Un proyecto puede estar vinculado a un archivo de Sheets, Docs, Slides o Forms. En ese caso, el script tiene un contexto natural para trabajar con ese archivo y resulta sencillo crear funciones, menús y activadores relacionados.

También puedes crear un proyecto independiente desde Apps Script. Esta opción es más apropiada cuando el código coordina varios archivos, funciona como servicio central o no debe depender de un documento concreto.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Qué no es

Apps Script no es automáticamente un backend de producción, una base de datos ni una plataforma ilimitada. Sus ejecuciones tienen cuotas, límites de tiempo y permisos. Puede ser una solución de producción para automatizaciones internas bien diseñadas, pero una API pública de alta disponibilidad, un sistema con millones de registros o una aplicación que requiera colas y observabilidad avanzadas suele necesitar otra arquitectura.

¿Para qué sirve?

Google Sheets

  • Limpiar, transformar y validar datos.
  • Copiar filas entre hojas o consolidar varios archivos.
  • Generar informes periódicos.
  • Crear funciones personalizadas.
  • Añadir botones y menús propios.
  • Generar documentos a partir de una plantilla.
  • Enviar una notificación cuando una fila cumple una condición.

Gmail

Puede crear borradores, enviar notificaciones, leer mensajes bajo autorización, aplicar etiquetas y procesar correos. También permite crear procesos de combinación de correspondencia, aunque el envío está sujeto a cuotas y políticas de la cuenta.

Drive

Puedes crear carpetas, buscar archivos, renombrarlos, moverlos, copiarlos, convertir documentos y organizar archivos que llegan mediante formularios.

Docs y Slides

Una automatización puede duplicar una plantilla, sustituir marcadores como {{nombre}}, crear contratos o certificados y producir presentaciones desde los datos de una hoja.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Forms y Calendar

Apps Script puede reaccionar al envío de un formulario, guardar o transformar sus respuestas, crear eventos, enviar confirmaciones y sincronizar datos con calendarios.

Interfaces y aplicaciones

Además de automatizaciones invisibles, puedes crear menús, diálogos y barras laterales HTML; publicar una web app; desarrollar complementos para Workspace o crear bots y aplicaciones de Google Chat.

Cómo empezar paso a paso

  1. Abre o crea un archivo de Google Sheets, Docs, Slides o Forms.
  2. En Sheets, Docs, Slides o Forms, abre Extensiones > Apps Script. Para un proyecto independiente, entra en el editor de Apps Script y crea un proyecto nuevo.
  3. Escribe una función y guarda el proyecto.
  4. Selecciona la función en el editor y pulsa Ejecutar.
  5. En la primera ejecución, revisa y acepta los permisos solicitados.
  6. Consulta el registro de ejecución si aparece un error.
  7. Si la función debe ejecutarse sola, crea un activador desde el panel de activadores.

La autorización depende de los servicios que utilice el código. Un script que solo calcula un valor necesitará menos permisos que otro que lea Gmail o envíe correos.

Primer ejemplo: enviar un correo desde Sheets

Prepara una hoja con estos datos:

Celda Contenido
A2 Dirección del destinatario
B2 Asunto
C2 Mensaje

En el editor de Apps Script, pega este código:

function enviarCorreoDesdeFila() {
  const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  const destinatario = hoja.getRange("A2").getValue();
  const asunto = hoja.getRange("B2").getValue();
  const mensaje = hoja.getRange("C2").getValue();

  if (!destinatario || !asunto || !mensaje) {
    throw new Error("Faltan datos en A2, B2 o C2.");
  }

  MailApp.sendEmail(destinatario, asunto, mensaje);
}

Guarda el proyecto, selecciona enviarCorreoDesdeFila y pulsa Ejecutar. Google mostrará una pantalla de autorización porque MailApp necesita permiso para enviar correo.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Este ejemplo es para aprender, no para enviar miles de mensajes. En un flujo real conviene validar la dirección, añadir una columna de estado, guardar la fecha de envío y evitar procesar dos veces la misma fila. Si el correo no debe duplicarse, registra un identificador o marca la fila como enviada solo después de una ejecución correcta.

Ejemplos útiles para seguir aprendiendo

Crear una función personalizada

function PRECIO_CON_DESCUENTO(precio, descuento) {
  return precio * (1 - descuento);
}

En Sheets puedes usarla así:

=PRECIO_CON_DESCUENTO(A2, B2)

Con A2 = 100 y B2 = 0.20, el resultado será 80. Una función personalizada debería devolver un valor. No es recomendable que modifique celdas, envíe correos o llame repetidamente a servicios externos. Para cambiar datos, utiliza una función ejecutada manualmente o un activador.

Añadir un menú personalizado

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("Mis herramientas")
    .addItem("Enviar correo", "enviarCorreoDesdeFila")
    .addToUi();
}

Cierra y vuelve a abrir la hoja. Aparecerá el menú Mis herramientas. onOpen(e) es un activador simple habitual para crear menús en archivos editables de Sheets, Docs, Slides y Forms.

Reaccionar a una edición

function onEdit(e) {
  const rango = e.range;

  if (rango.getColumn() === 4 && rango.getValue() === "Completado") {
    rango.setNote(`Completado el ${new Date().toLocaleString()}`);
  }
}

Cuando un usuario escriba Completado en la columna D, la celda recibirá una nota con la fecha. El parámetro e es el objeto de evento y e.range identifica el rango modificado.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Este activador responde a una edición manual. Una modificación realizada por otro script no dispara automáticamente onEdit.

Crear una web app mínima

function doGet() {
  return HtmlService
    .createHtmlOutput("<h1>Hola desde Apps Script</h1>");
}

Para publicarla:

  1. Abre el proyecto y selecciona Deploy > New deployment.
  2. Elige Web app.
  3. Configura quién puede acceder.
  4. Elige si se ejecutará como el propietario o como el usuario que accede.
  5. Pulsa Deploy y copia la URL publicada.

Una web app debe incluir doGet(e) o doPost(e) y devolver un objeto HtmlOutput o TextOutput. La opción de ejecución determina qué datos puede leer y con qué identidad actúa el código. La guía oficial de web apps explica estas diferencias.

Activadores simples e instalables

Los activadores son eventos que ejecutan una función sin que tengas que pulsar el botón Ejecutar.

Característica Simple Instalable
Configuración Se activa por el nombre reservado, como onEdit Se crea desde el panel de activadores o mediante código
Ejemplos onOpen, onEdit, onInstall Al abrir, editar, cambiar, enviar un formulario o según un horario
Autorización Tiene restricciones y normalmente no puede usar servicios que requieren autorización Puede usar servicios autorizados
Identidad Está limitada por las reglas del activador simple En general se ejecuta con la autorización de quien lo creó
Tiempo máximo 30 segundos Está sujeto a los límites de Apps Script y a las cuotas

Por eso un onEdit simple puede añadir una nota, pero no es la opción adecuada para enviar un correo con MailApp. Para esa tarea crea un activador instalable de tipo Al editar y autoriza el proyecto.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recuerda que un activador instalable no necesariamente usa los permisos de la persona que provocó el evento. Normalmente actúa con la identidad del usuario que creó el activador. Si esa persona pierde acceso al archivo, cambia de dominio o abandona la organización, el flujo puede dejar de funcionar.

Permisos y seguridad

Apps Script analiza los servicios usados por el código y solicita los permisos correspondientes. La documentación de autorización explica cómo funcionan los scopes y la autorización de activadores.

  • Solicita solo los permisos necesarios.
  • Usa @OnlyCurrentDoc cuando el script solo necesita el archivo actual.
  • Revisa el archivo appsscript.json en proyectos publicados y define scopes explícitos cuando corresponda.
  • No copies código de terceros sin entender qué datos lee y qué servicios puede controlar.
  • No guardes contraseñas, tokens ni claves API directamente en el código.
  • Usa propiedades protegidas o un servicio apropiado para la configuración sensible.
  • Revoca el acceso de un script que ya no utilices.

Una advertencia de aplicación no verificada no demuestra por sí sola que el script sea malicioso, pero sí exige comprobar quién lo creó, qué permisos pide y si realmente necesitas concedérselos.

Cuotas y límites

Las cuotas dependen del tipo de cuenta y del servicio. La siguiente tabla recoge valores mostrados en la documentación oficial el 18 de agosto de 2026; no son garantías permanentes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Recurso diario Cuenta de consumidor Google Workspace
Destinatarios de correo con MailApp 100 1.500
Destinatarios dentro del dominio 100 2.000
Lectura/escritura de correo 20.000 50.000
Tiempo total de activadores 90 minutos 6 horas
Llamadas UrlFetchApp 20.000 100.000
Documentos creados 250 1.500
Presentaciones creadas 250 1.500
Hojas de cálculo creadas 250 3.200
Lectura/escritura de propiedades 50.000 500.000
Eventos de Calendar creados 5.000 10.000
Activadores por usuario y proyecto 20 20

Las cuotas suelen ser por usuario y se reinician 24 horas después de la primera solicitud correspondiente. Google puede cambiarlas o eliminarlas sin aviso, y algunos servicios aplican límites adicionales. Si superas una cuota, la ejecución puede detenerse con una excepción.

Consulta siempre la página de cuotas de Apps Script antes de diseñar un proceso de volumen. No presentes esos números como la capacidad garantizada de una aplicación comercial.

Rendimiento: evita trabajar celda por celda

Las llamadas a Sheets, Gmail y APIs externas suelen ser mucho más lentas que procesar datos en memoria. Evita este patrón:

for (let i = 1; i <= 1000; i++) {
  hoja.getRange(i, 2).setValue("Procesado");
}

Lee y escribe en bloques:

const rango = hoja.getRange(1, 2, 1000, 1);
const valores = Array.from({ length: 1000 }, () => ["Procesado"]);

rango.setValues(valores);

La guía de buenas prácticas de Apps Script recomienda reducir las llamadas a servicios, leer rangos en arrays, procesar en memoria y escribir el resultado de una vez.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

También puede ser útil:

  • CacheService para datos temporales.
  • PropertiesService para configuración y progreso pequeño.
  • LockService para impedir que dos ejecuciones modifiquen el mismo recurso simultáneamente.
  • Procesar por páginas o bloques y guardar el progreso.
  • Diseñar funciones idempotentes para que repetirlas no cree duplicados.
  • Separar configuración, lógica y funciones de entrada.
  • Usar Shared Drives cuando el modelo de propiedad del equipo lo requiera.
  • Registrar errores, resultados e identificadores de procesamiento.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Errores frecuentes y cómo recuperarse

“Authorization required”

Puede aparecer al añadir un servicio nuevo, al ejecutar un activador sin autorización o cuando el creador del activador perdió acceso.

  1. Ejecuta manualmente una función desde el editor.
  2. Acepta los permisos solicitados.
  3. Guarda y vuelve a probar.
  4. Revisa el panel de activadores instalables.
  5. Comprueba que el propietario del activador mantiene acceso al archivo.

El onEdit no se ejecuta

Comprueba que la función se llame exactamente onEdit, que la edición sea manual, que el proyecto esté vinculado a una hoja compatible y que no estés esperando que una modificación realizada por otro script dispare el evento.

El correo no se envía

Revisa la autorización de MailApp o GmailApp, la cuota diaria, la dirección del destinatario, los registros de ejecución y las políticas de tu organización. Si el envío ocurre desde un evento, utiliza un activador instalable cuando el servicio requiera autorización.

La web app devuelve 403, 405 o permisos

Comprueba quién puede acceder, con qué identidad se ejecuta, si estás usando la URL publicada /exec en lugar de la URL de prueba /dev y si desplegaste de nuevo después de cambiar el código. Los parámetros c y sid están reservados y pueden provocar un error 405. Un cambio de propietario entre dominios o hacia un Shared Drive también puede exigir un nuevo despliegue. Consulta la documentación de web apps.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Exceeded maximum execution time”

Reduce llamadas externas, reemplaza operaciones fila por fila por operaciones por lotes, divide el trabajo en varias ejecuciones y guarda el progreso en propiedades. Si la carga sigue siendo grande, trasládala a Cloud Run, Cloud Functions, BigQuery, Dataflow u otro backend adecuado.

Apps Script frente a macros, Zapier y Make

Necesidad Opción más adecuada
Repetir una acción de formato dentro de una hoja Macro
Automatizar Gmail, Drive, Calendar y Sheets con lógica propia Apps Script
Conectar muchas aplicaciones sin programar Zapier o Make
Crear una herramienta interna personalizada Apps Script
Crear una API pública robusta Backend tradicional
Procesar millones de filas BigQuery, Cloud Run, Dataflow u otra plataforma escalable

Apps Script ofrece control fino del código, integración nativa con Google y un coste de entrada bajo. A cambio, exige entender JavaScript, permisos, despliegues y cuotas.

Zapier suele ser más rápido para conectar aplicaciones con una interfaz visual. Según la página de precios consultada el 18 de agosto de 2026, dispone de un plan gratuito con 100 tareas mensuales y planes de pago desde 19,99 dólares mensuales; el coste depende del número de tareas y del flujo.

Make está orientado a escenarios visuales con filtros, routers y transformaciones. En la misma fecha mostraba un plan gratuito de hasta 1.000 créditos mensuales y planes desde 12 dólares al mes para 10.000 créditos. Cada acción de un módulo consume créditos según el plan y el escenario.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Los precios y límites pueden cambiar. Para una automatización casi completamente interna a Google, con validaciones y lógica específica, escribir código puede ser más flexible. Para una conexión sencilla entre aplicaciones, una plataforma visual puede ahorrar tiempo de desarrollo y mantenimiento.

¿Quién debería usar Google Apps Script?

Elige Apps Script cuando:

  • La información ya está en Sheets, Gmail, Drive, Forms o Calendar.
  • La automatización es interna y el volumen es moderado.
  • Una fórmula o macro no resuelve la lógica necesaria.
  • El equipo acepta depender de Google Workspace.
  • Quieres evitar mantener un servidor propio para un proceso pequeño o mediano.

Evalúa otra solución cuando necesites una API pública de alta disponibilidad, ejecuciones muy largas, grandes volúmenes, transacciones, colas, observabilidad avanzada, una base de datos robusta o independencia de una cuenta de Google.

Apps Script puede usarse con cuentas de consumidor y con Google Workspace, pero las cuotas, políticas del administrador y servicios disponibles pueden variar. Tampoco debe describirse como completamente gratuito en todos los contextos: el acceso a Workspace, los servicios utilizados y una arquitectura avanzada pueden tener costes.

Conclusión

Google Apps Script merece la pena aprenderlo si tu trabajo ocurre principalmente dentro de Google Workspace. Con unas pocas funciones puedes convertir una hoja en una herramienta interna, generar documentos, enviar notificaciones, procesar formularios o sincronizar calendarios sin administrar un servidor.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Empieza con una automatización pequeña, autoriza solo los permisos necesarios, usa activadores instalables cuando el flujo requiera servicios protegidos y procesa los datos por lotes. Cuando aparezcan límites de tiempo, cuotas, alta disponibilidad o volúmenes grandes, no fuerces Apps Script: cambia a un backend o servicio especializado.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.