Curso Completo de JavaScript en Google Apps Script
Curso Completo de JavaScript en Google Apps Script
🎯 Objetivo:
🧠 Concepto clave
Se programa directamente desde Extensiones > Apps Script en una hoja de cálculo de
Google.
javascript
CopiarEditar
function escribirNombre() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.getRange("A1").setValue("Hola, Gaston");
}
✅ Próxima clase:
Uso de variables.
Uso de celdas dinámicas.
Escribir en varias celdas con un bucle for.
🎯 Objetivo:
🧠 Conceptos clave
javascript
CopiarEditar
let nombre = "Gaston";
javascript
CopiarEditar
hoja.getRange("A1").setValue("Hola, " + nombre);
javascript
CopiarEditar
for (let i = 1; i <= 5; i++) {
hoja.getRange(i, 1).setValue("Fila " + i);
}
🛠 Código ejemplo:
javascript
CopiarEditar
function llenarNombres() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let nombre = "Gaston";
✍️Ejercicio práctico
Cargá un array de colores y escribí "Gaston" en distintas filas con diferentes colores de
texto.
javascript
CopiarEditar
const colores = ["red", "blue", "green", "purple", "orange"];
🎯 Objetivo:
javascript
CopiarEditar
let valor = hoja.getRange("A1").getValue();
Condicional if:
javascript
CopiarEditar
if (valor === "Gaston") {
// hacer algo
} else {
// hacer otra cosa
}
Mostrar mensajes:
javascript
CopiarEditar
Browser.msgBox("Texto que quieras mostrar");
🛠 Ejemplo práctico
javascript
CopiarEditar
function verificarNombre() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let valor = hoja.getRange("A1").getValue();
✍️Ejercicio práctico
1. Cambiá "Gaston" por tu nombre completo.
2. Hacé que se verifique si la celda B1 contiene "admin" y si es así escriba "Acceso
permitido" en B2, sino "Acceso denegado".
3. Agregá un setFontColor() diferente para cada caso.
🎯 Objetivo:
🧠 Conceptos clave
javascript
CopiarEditar
let datos = hoja.getRange("A2:A10").getValues(); // devuelve una
matriz
javascript
CopiarEditar
for (let i = 0; i < datos.length; i++) {
let valor = datos[i][0]; // primera columna
// hacer algo con valor
}
🛠 Ejemplo práctico
javascript
CopiarEditar
function buscarNombreEnLista() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let datos = hoja.getRange("A2:A10").getValues(); // nombres en A2:A10
let encontrado = false;
if (!encontrado) {
Browser.msgBox("El nombre 'Gaston' no se encontró.");
}
}
✍️Ejercicio práctico
Cargá una lista de nombres en A2:A10 y escribí al lado su longitud (número de letras)
usando:
javascript
CopiarEditar
hoja.getRange(i + 2, 2).setValue(valor.length);
🎯 Objetivo:
javascript
CopiarEditar
function saludoPersonalizado(nombre) {
return "Hola, " + nombre + " 👋";
}
✅ ¿Cómo usarla?
1. Guardás el script.
2. En cualquier celda escribís:
arduino
CopiarEditar
=saludoPersonalizado("Carlos")
y devuelve:
CopiarEditar
Hola, Carlos 👋
Esta función se ejecuta automáticamente cada vez que editás algo en la hoja.
javascript
CopiarEditar
function onEdit(e) {
const hoja = e.source.getActiveSheet();
const celda = e.range;
✅ ¿Qué hace?
✍️Ejercicio práctico
🎯 Objetivo:
Con la función especial onOpen(), podemos agregar un menú cada vez que se abre la hoja.
javascript
CopiarEditar
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu("Automatización")
.addItem("Escribir saludo", "escribirSaludo")
.addSeparator()
.addItem("Limpiar hoja", "limpiarHoja")
.addToUi();
}
function escribirSaludo() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.getRange("A1").setValue("¡Hola desde el menú!");
}
function limpiarHoja() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.clear();
}
✍️Ejercicio práctico
javascript
CopiarEditar
hoja.getRange("B1").setValue(new Date());
🎯 Objetivo:
formulario.addTextItem().setTitle("Nombre completo");
formulario.addTextItem().setTitle("Correo electrónico");
formulario.addMultipleChoiceItem()
.setTitle("¿Te interesa recibir novedades?")
.setChoiceValues(["Sí", "No"]);
✅ ¿Qué hace?
javascript
CopiarEditar
function procesarRespuestas() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const datos = hoja.getDataRange().getValues();
✍️Ejercicio práctico
javascript
CopiarEditar
formulario.addParagraphTextItem().setTitle("Comentarios
adicionales");
2. Modificá procesarRespuestas para marcar en rojo las respuestas con suscripción “No”.
3. Hacelo compatible con formularios en los que los datos comienzan en otra hoja (usá
getSheetByName("NombreHoja")).
🎯 Objetivo:
🧠 Sintaxis básica
javascript
CopiarEditar
MailApp.sendEmail(destinatario, asunto, mensaje);
🔐 Ejemplo básico
javascript
CopiarEditar
function enviarCorreoSimple() {
MailApp.sendEmail(
"[email protected]",
"Saludos desde Google Apps Script",
"Este es un mensaje automático de prueba."
);
}
javascript
CopiarEditar
function enviarCorreosPersonalizados() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const datos = hoja.getRange("A2:B10").getValues();
if (correo) {
let mensaje = `Hola ${nombre},\n\nGracias por participar.`;
MailApp.sendEmail(correo, "Confirmación de registro", mensaje);
}
}
}
🧠 Límite importante
Las cuentas personales de Google tienen un límite diario (aprox. 100 correos/día).
Las cuentas Google Workspace (empresa/educación) tienen más (hasta 1500).
✍️Ejercicio práctico
🎯 Objetivo:
Podemos crear nuevos archivos desde Google Apps Script. Por ejemplo, si quieres crear un archivo
de texto:
javascript
CopiarEditar
function crearArchivoTexto() {
const archivo = DriveApp.createFile("NuevoArchivo.txt", "Este es el
contenido del archivo");
Logger.log("Archivo creado con ID: " + archivo.getId());
}
✅ ¿Qué hace?
javascript
CopiarEditar
function crearHojaDeCalculo() {
const hoja = SpreadsheetApp.create("Reporte Automático");
const sheet = hoja.getActiveSheet();
sheet.appendRow(["Nombre", "Correo", "Estado"]);
sheet.appendRow(["Juan", "[email protected]", "Enviado"]);
sheet.appendRow(["Ana", "[email protected]", "Pendiente"]);
✅ ¿Qué hace?
También puedes convertir y guardar una hoja de cálculo como un archivo PDF.
javascript
CopiarEditar
function guardarComoPDF() {
const hoja = SpreadsheetApp.getActiveSpreadsheet();
const archivoPDF = DriveApp.createFile(hoja.getAs("application/pdf"));
archivoPDF.setName("ReporteEnPDF.pdf");
✅ ¿Qué hace?
✍️Ejercicio práctico
1. Crea un archivo de texto que contenga los nombres de las personas de la columna A de tu
hoja activa.
2. Guarda ese archivo con un nombre específico, como "Nombres de la hoja.txt".
3. Si una columna tiene datos en ella, conviértelo en un archivo PDF con un nombre que
refleje la fecha actual.
Con UrlFetchApp puedes hacer solicitudes a cualquier API que tenga un endpoint accesible por
HTTP o HTTPS.
Ejemplo de solicitud GET a una API pública (por ejemplo, para obtener datos del clima):
javascript
CopiarEditar
function obtenerDatosClima() {
const url = "https://api.openweathermap.org/data/2.5/weather?
q=London&appid=tu_api_key";
const respuesta = UrlFetchApp.fetch(url); // Hace la solicitud
const datos = JSON.parse(respuesta.getContentText()); // Parsea la
respuesta JSON
✅ ¿Qué hace?
Nota: Necesitas una clave de API para acceder a datos reales (puedes obtenerla registrándote en
el sitio de OpenWeatherMap).
Podemos tomar los datos de la API y mostrarlos directamente en las celdas de Google Sheets.
javascript
CopiarEditar
function mostrarClimaEnHoja() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const url = "https://api.openweathermap.org/data/2.5/weather?
q=London&appid=tu_api_key";
const respuesta = UrlFetchApp.fetch(url);
const datos = JSON.parse(respuesta.getContentText());
hoja.getRange("A1").setValue("Temperatura");
hoja.getRange("B1").setValue(temperatura);
hoja.getRange("A2").setValue("Descripción");
hoja.getRange("B2").setValue(descripcion);
}
✅ ¿Qué hace?
Si necesitas enviar datos a una API, puedes usar el método UrlFetchApp.fetch() con el
método POST.
javascript
CopiarEditar
function enviarDatosAPI() {
const url = "https://api.example.com/submit";
const payload = {
nombre: "Juan",
correo: "[email protected]",
mensaje: "Este es un mensaje de prueba."
};
const opciones = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload)
};
✅ ¿Qué hace?
Envía un objeto JSON con nombre, correo y mensaje a una API a través de una solicitud
POST.
Muestra la respuesta de la API en el log.
✍️Ejercicio práctico
1. Realizá una solicitud a una API pública (por ejemplo, una API de películas) y muestra
información relevante en una hoja (como título, año, calificación, etc.).
2. Usa un formulario en Google Sheets para enviar datos (nombre, email, etc.) a una API que
acepte POST.
3. Agrega un error de manejo (try/catch) para casos en que la API no responda.
🎯 Objetivo:
🧠 ¿Qué es un Trigger?
Hay 2 tipos:
javascript
CopiarEditar
function onOpen() {
SpreadsheetApp.getUi().alert("¡Bienvenido! Este mensaje se muestra al
abrir el archivo.");
}
if (celda.getColumn() === 1) {
celda.setBackground("yellow");
}
}
javascript
CopiarEditar
function onFormSubmit(e) {
const hoja = e.range.getSheet();
const fila = e.range.getRow();
javascript
CopiarEditar
function crearTriggerTiempo() {
ScriptApp.newTrigger("tareaAutomatica")
.timeBased()
.everyHours(1) // Ejecutar cada hora
.create();
}
function tareaAutomatica() {
Logger.log("Tarea ejecutada automáticamente cada hora: " + new Date());
}
Otras opciones:
.everyMinutes(n)
.everyDays(n)
.atHour(10) → a las 10:00
.onWeekDay(ScriptApp.WeekDay.MONDAY)
✍️Ejercicio práctico
1. Creá un trigger que actualice automáticamente una celda con la fecha y hora cada 10
minutos.
2. Usá onEdit para detectar si alguien escribe "URGENTE" y resaltarlo en rojo.
3. Mostrá un mensaje personalizado al abrir la hoja según el día de la semana.
🎯 Objetivo:
Con el trigger onOpen(), podemos agregar un menú personalizado en la barra superior de Google
Sheets.
Ejemplo básico:
javascript
CopiarEditar
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Mi Menú')
.addItem('Saludar', 'mostrarSaludo')
.addItem('Limpiar hoja', 'limpiarHoja')
.addToUi();
}
function mostrarSaludo() {
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('A1').s
etValue('¡Hola desde el menú!');
}
function limpiarHoja() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.clear();
}
✅ ¿Qué hace?
Puedes crear submenús dentro de tu menú personalizado para hacer más organizados los accesos.
javascript
CopiarEditar
function onOpen() {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('Mi Menú');
menu.addToUi();
}
function contarFilas() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const cantidad = hoja.getLastRow();
SpreadsheetApp.getUi().alert('Hay ' + cantidad + ' filas en la hoja.');
}
✅ ¿Qué hace?
✍️Ejercicio práctico
1. Crea un menú personalizado con las siguientes opciones:
o Ver fecha: Mostrar la fecha actual en A1.
o Borrar contenido: Borrar todas las celdas.
2. Añadir un botón que cambie el color de fondo de la hoja a azul.
3. Crea un submenú que permita insertar filas y columnas.
🎯 Objetivo:
Google Sheets tiene herramientas integradas para crear gráficos, y podemos acceder a ellas
usando Google Apps Script.
javascript
CopiarEditar
function crearGrafico() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
✅ ¿Qué hace?
javascript
CopiarEditar
function crearGraficoLineas() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Insertar el gráfico
hoja.insertChart(grafico);
}
✅ ¿Qué hace?
javascript
CopiarEditar
function crearGraficoPersonalizado() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.insertChart(grafico);
}
✅ ¿Qué hace?
✍️Ejercicio práctico
🎯 Objetivo:
Podemos usar Google Apps Script para generar informes dinámicos. Supongamos que queremos
crear un informe de ventas mensuales.
✅ ¿Qué hace?
Google Sheets permite exportar una hoja o rango como un archivo PDF. Usamos el método
SpreadsheetApp.getActiveSpreadsheet().getAs() para hacerlo.
javascript
CopiarEditar
function exportarComoPDF() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Renombrar el archivo
archivo.setName('Informe de ventas - ' + new
Date().toLocaleDateString() + '.pdf');
✅ ¿Qué hace?
Si deseas exportar toda la hoja o el documento entero, puedes usar el siguiente código:
javascript
CopiarEditar
function exportarTodoComoPDF() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const pdfOptions = {
format: 'pdf',
gid: ss.getSheets()[0].getSheetId(), // Exporta la primera hoja
exportFormat: 'pdf',
size: 'A4',
landscape: false,
fitw: true,
gridlines: false
};
archivo.setName(nombreArchivo + '.pdf');
✅ ¿Qué hace?
Exporta toda la hoja activa como PDF.
Guarda el archivo PDF en Google Drive y lo renombra.
Muestra la URL del archivo exportado.
✍️Ejercicio práctico
1. Crea un informe automático que incluya la fecha actual y algunos datos de ventas ficticios
en A1:B10.
2. Exporta ese informe como un archivo PDF y guárdalo en Google Drive.
3. Usa un trigger para ejecutar la función de exportación al final de cada mes.
4.
🎯 Objetivo:
Integrar Google Sheets con otras aplicaciones de Google (Google Calendar, Google
Contacts, etc.).
javascript
CopiarEditar
function crearEvento() {
const calendar = CalendarApp.getDefaultCalendar();
const fechaInicio = new Date('2025-05-01T09:00:00');
const fechaFin = new Date('2025-05-01T10:00:00');
✅ ¿Qué hace?
javascript
CopiarEditar
function agregarContacto() {
const contactos = ContactsApp.createContact('Juan', 'Pérez',
'[email protected]');
Logger.log('Contacto agregado: ' + contactos.getFullName());
}
✅ ¿Qué hace?
🎯 Objetivo:
Crear, mover, y gestionar archivos en Google Drive directamente desde Google Sheets.
Puedes crear un archivo de Google Docs desde Google Sheets y agregarle contenido.
javascript
CopiarEditar
function crearDocumento() {
const doc = DocumentApp.create('Informe de Ventas');
doc.getBody().appendParagraph('Este es el contenido del informe de
ventas.');
doc.saveAndClose();
Logger.log('Documento creado: ' + doc.getUrl());
}
✅ ¿Qué hace?
javascript
CopiarEditar
function moverArchivo() {
const archivo = DriveApp.getFilesByName('Informe de Ventas').next();
const carpeta = DriveApp.getFolderById('ID_DE_LA_CARPETA');
carpeta.createFile(archivo);
Logger.log('Archivo movido a la carpeta');
}
✅ ¿Qué hace?
Mueve un archivo llamado "Informe de Ventas" a una carpeta específica en Google Drive.
🎯 Objetivo:
javascript
CopiarEditar
function enviarCorreo() {
const destinatario = "[email protected]";
const asunto = "Informe Automático";
const mensaje = "Este es el informe generado automáticamente.";
✅ ¿Qué hace?
javascript
CopiarEditar
function crearTrigger() {
ScriptApp.newTrigger("enviarCorreo")
.timeBased()
.everyDays(1) // Ejecutar todos los días
.atHour(9) // A las 9:00 AM
.create();
}
✅ ¿Qué hace?
Crea un disparador que ejecuta la función enviarCorreo todos los días a las 9:00 AM.
🎯 Objetivo:
Puedes crear un formulario de Google Forms y agregarle preguntas usando Google Apps Script.
javascript
CopiarEditar
function crearFormulario() {
const formulario = FormApp.create('Encuesta de satisfacción');
formulario.addMultipleChoiceItem()
.setTitle('¿Cómo calificarías nuestro servicio?')
.setChoiceValues(['Excelente', 'Bueno', 'Regular', 'Malo']);
Logger.log('Formulario creado: ' + formulario.getEditUrl());
}
✅ ¿Qué hace?
Puedes hacer que las respuestas de un formulario se envíen directamente a Google Sheets.
javascript
CopiarEditar
function vincularFormularioConHoja() {
const formulario = FormApp.openById('ID_DEL_FORMULARIO');
const hoja = SpreadsheetApp.getActiveSpreadsheet();
formulario.setDestination(FormApp.DestinationType.SPREADSHEET,
hoja.getId());
Logger.log('Formulario vinculado con la hoja');
}
✅ ¿Qué hace?
Vincula un formulario de Google con una hoja de cálculo para que las respuestas se
registren automáticamente.
🎯 Objetivo:
Crear aplicaciones sencillas que se ejecuten desde Google Sheets usando formularios,
menús y funciones automáticas.
javascript
CopiarEditar
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Mi Aplicación')
.addItem('Generar Informe', 'generarInforme')
.addItem('Enviar Correo', 'enviarCorreo')
.addItem('Crear Formulario', 'crearFormulario')
.addToUi();
}
✅ ¿Qué hace?
Crea un menú en la hoja con opciones para generar informes, enviar correos y crear
formularios.
javascript
CopiarEditar
function ingresarDatos() {
const ui = SpreadsheetApp.getUi();
const respuesta = ui.prompt('Ingrese su nombre');
if (respuesta.getSelectedButton() == ui.Button.OK) {
const nombre = respuesta.getResponseText();
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('A1')
.setValue('Nombre: ' + nombre);
}
}
✅ ¿Qué hace?
Muestra un cuadro de texto para ingresar un nombre, luego lo coloca en la celda A1.
🎯 Objetivo:
Trabajamos con Google Sheets, Google Calendar, Google Contacts, Google Drive, y Google
Forms.
Aprendimos a automatizar tareas, crear menús personalizados y exportar datos.
🎯 Objetivo:
Aprender a integrar Google Sheets con otras aplicaciones de Google, como Google Drive,
Gmail, Google Calendar, Google Docs, y más, utilizando Google Apps Script.
javascript
CopiarEditar
function crearCarpeta() {
const nombreCarpeta = "Mi Nueva Carpeta";
const carpeta = DriveApp.createFolder(nombreCarpeta); // Crea una
nueva carpeta en Google Drive
Logger.log('Carpeta creada: ' + carpeta.getName()); // Muestra el
nombre de la carpeta creada
}
Explicación:
Gmail es otra aplicación de Google que puedes controlar a través de Google Apps Script. Puedes
enviar correos electrónicos automáticamente desde Google Sheets o desde cualquier otra
aplicación integrada.
javascript
CopiarEditar
function enviarCorreo() {
const destinatario = "[email protected]";
const asunto = "Asunto del correo";
const mensaje = "Este es el cuerpo del mensaje.";
Explicación:
Google Calendar permite gestionar eventos y citas. Con Google Apps Script, puedes crear eventos,
modificar, y obtener información de tu calendario.
javascript
CopiarEditar
function crearEvento() {
const calendario = CalendarApp.getDefaultCalendar(); // Obtiene el
calendario predeterminado
const titulo = "Reunión de trabajo";
const fechaInicio = new Date(2025, 4, 30, 10, 0); // Fecha y hora de
inicio
const fechaFin = new Date(2025, 4, 30, 11, 0); // Fecha y hora de
finalización
// Crea el evento
calendario.createEvent(titulo, fechaInicio, fechaFin);
Logger.log("Evento creado: " + titulo); // Muestra el título del
evento creado
}
Explicación:
Con Google Apps Script, también puedes crear y modificar documentos de Google Docs
directamente desde tu script. Esto es útil para automatizar la creación de documentos, informes,
etc.
javascript
CopiarEditar
function crearDocumento() {
const doc = DocumentApp.create("Mi Documento de Google Docs"); // Crea
un nuevo documento
const cuerpo = doc.getBody();
cuerpo.appendParagraph("¡Hola, este es un documento generado
automáticamente!"); // Agrega un párrafo al documento
doc.saveAndClose(); // Guarda y cierra el documento
Explicación:
Además de trabajar con Google Sheets a través de Apps Script, también puedes interactuar con
otras aplicaciones de Google como Google Forms y Google Sites.
javascript
CopiarEditar
function agregarDatosHoja() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Obtiene la hoja activa
hoja.appendRow(["Dato 1", "Dato 2", "Dato 3"]); // Agrega una fila con
datos
Logger.log("Datos añadidos a la hoja."); // Muestra un mensaje de
confirmación
}
Explicación:
🧠 Parte 6: Usar Google Apps Script en conjunto con Google Apps (API de
Google)
A través de las APIs de Google, puedes crear integraciones más avanzadas entre Google Sheets y
otras aplicaciones de Google. Por ejemplo, puedes automatizar la creación de documentos en
Google Docs a partir de datos de una hoja de cálculo, o incluso integrar Google Sheets con Google
Forms para recopilar respuestas automáticamente.
javascript
CopiarEditar
function enviarDatosAFormulario() {
const formulario = FormApp.openById("ID_DE_TU_FORMULARIO"); // Abre un
formulario existente
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Obtiene la hoja activa
const datos = hoja.getRange("A2:A10").getValues(); // Obtiene los
datos de la columna A (de la fila 2 a la 10)
Explicación:
🎯 Objetivo:
Revisar y afianzar los fundamentos de JavaScript que son fundamentales para trabajar con
Google Apps Script, incluyendo las estructuras básicas, cómo se gestionan las variables, y
las funciones clave que usamos en la plataforma.
La palabra clave const se usa para declarar variables que no cambiarán su valor. Cuando defines
una variable con const, se convierte en una constante, es decir, su valor no puede modificarse
después de la asignación inicial.
Ejemplo:
javascript
CopiarEditar
const nombre = "Gaston";
nombre = "Juan"; // Esto causaría un error
let
Se utiliza para declarar variables que sí pueden cambiar su valor durante la ejecución del código.
Es más flexible que const porque puedes reasignar su valor.
Ejemplo:
javascript
CopiarEditar
let edad = 30;
edad = 31; // Esto es válido, ya que 'edad' es una variable con 'let'
var
Aunque ya no se usa tanto debido a la existencia de let y const, var se utiliza de forma similar a
let, pero tiene un alcance de función (scope) en lugar de bloque. Esto puede causar problemas en
algunos casos, y es preferible usar let o const en lugar de var.
Ejemplo:
javascript
CopiarEditar
var ciudad = "Buenos Aires";
ciudad = "Córdoba"; // Esto también es válido, pero 'var' tiene un
alcance más amplio que 'let' y 'const'.
2. Funciones: function
Las funciones en JavaScript son bloques de código que se ejecutan cuando se les invoca. Puedes
pasarles datos (parámetros) y retornar un valor (resultado).
javascript
CopiarEditar
function miFuncion() {
// Código que ejecuta la función
}
javascript
CopiarEditar
function suma(a, b) {
return a + b; // Retorna la suma de los parámetros
}
Sintaxis:
javascript
CopiarEditar
if (condicion) {
// Código si la condición es verdadera
} else if (otraCondicion) {
// Código si la otra condición es verdadera
} else {
// Código si ninguna de las condiciones es verdadera
}
Ejemplo:
javascript
CopiarEditar
let edad = 20;
Sintaxis:
javascript
CopiarEditar
for (let i = 0; i < 5; i++) {
Logger.log("Iteración: " + i);
}
while
El ciclo while ejecuta un bloque de código mientras se cumpla una condición. Es útil cuando no
sabes de antemano cuántas veces necesitas iterar.
Sintaxis:
javascript
CopiarEditar
let i = 0;
while (i < 5) {
Logger.log("Iteración: " + i);
i++; // No olvides modificar el valor de i para evitar un ciclo
infinito
}
do...while
El ciclo do...while es similar a while, pero garantiza que el código se ejecute al menos una vez,
incluso si la condición no se cumple desde el principio.
Sintaxis:
javascript
CopiarEditar
let i = 0;
do {
Logger.log("Iteración: " + i);
i++;
} while (i < 5);
5. Objetos:
En JavaScript, los objetos son colecciones de datos en forma de clave: valor. Los objetos son muy
útiles para estructurar información compleja y se utilizan de manera extensiva en Google Apps
Script para manipular datos.
javascript
CopiarEditar
let persona = {
nombre: "Gaston",
edad: 30,
saludo: function() {
Logger.log("¡Hola, soy " + this.nombre);
}
};
Explicación:
6. Logger.log()
El método Logger.log() es útil para ver el resultado de los cálculos o los valores de las variables
durante la ejecución de un script. Se utiliza mucho para depuración.
Ejemplo:
javascript
CopiarEditar
Logger.log("Este es un mensaje"); // Imprime el mensaje en la consola de
logs
Google Apps Script te permite interactuar con Google Sheets de forma sencilla utilizando métodos
como getActiveSpreadsheet(), getActiveSheet(), y appendRow().
appendRow()
Este método agrega una nueva fila con los valores proporcionados al final de la hoja activa.
Ejemplo:
javascript
CopiarEditar
function agregarFila() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
hoja.appendRow(["Dato 1", "Dato 2", "Dato 3"]);
Logger.log("Fila agregada");
}
Explicación:
En esta clase cubrimos los fundamentos esenciales de JavaScript, los cuales son fundamentales
para comenzar a trabajar con Google Apps Script. Estos conceptos incluyen:
Estos fundamentos son esenciales para escribir scripts eficaces en Google Apps Script y aprovechar
al máximo las capacidades de automatización que ofrece la plataforma.
Para empezar a programar en Java dentro de Google Sheets (Drive) utilizando Google
Apps Script, necesitas seguir los pasos que te indico a continuación. Ten en cuenta que
Google Apps Script no es exactamente Java, sino JavaScript, el cual es un lenguaje de
programación basado en Java, pero distinto en varios aspectos. Aquí te explico cómo
acceder y empezar:
Google Apps Script utiliza JavaScript porque está diseñado para integrarse con
productos de Google (como Google Sheets, Docs, Gmail, etc.), mientras que Java
no tiene esa integración directa.
Google Apps Script ofrece una interfaz más sencilla para automatizar tareas dentro
de la suite de Google, mientras que Java generalmente se usa para aplicaciones más
grandes o sistemas backend.
Importante:
Si necesitas hacer algo muy avanzado o específico en Java que no sea posible con Google
Apps Script (JavaScript), podrías usar la Google Sheets API desde un entorno de Java,
pero para la mayoría de los casos de automatización y manipulación de hojas de cálculo,
Google Apps Script (JavaScript) es la forma más sencilla y recomendada.
TRASFORMACION DE MACRO A JAVASCRIPT EN GOOGLE APPS
SCRIPT
MACRO
Sub GenerarCalendario()
Dim Año As Integer
Dim Mes As Integer
Dim Fecha As Date
Dim DiaInicial As Integer
Dim Fila As Integer
Dim Columna As Integer
If Año = 0 Then
MsgBox "Por favor, ingresa un año válido en la celda A1.", vbExclamation
Exit Sub
End If
If Mes = 0 Then
MsgBox "Por favor, ingresa un mes válido en la celda A2.", vbExclamation
Exit Sub
End If
' Verificar si la fecha está en la lista de feriados y cambiar el color del texto a rojo
Dim feriados As Range
Set feriados = Sheets("FERIADOS_C_I").Range("FERIADOS") ' Referencia a la
hoja FERIADOS_C_I y al rango con nombre 'FERIADOS'
Para transformar esta macro de VBA (Visual Basic for Applications) en un Google
Apps Script que funcione en Google Sheets (Drive), hay que realizar algunos
cambios porque Google Apps Script utiliza JavaScript, no VBA. Aquí tienes una
adaptación de la macro para que funcione en Google Sheets:
javascript
CopiarEditar
function generarCalendario() {
var hoja =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CALENDARIO_INFIN
ITO");
var año = hoja.getRange("A1").getValue(); // Año en la celda A1
var mesStr = hoja.getRange("A2").getValue(); // Mes en la celda A2
var fecha = new Date(año, obtenerNumeroMes(mesStr), 1); // Fecha del primer día
del mes
var diaInicial = fecha.getDay() || 7; // Convertir domingo (0) a 7 para que lunes sea
el día 1
if (!año || !mesStr) {
SpreadsheetApp.getUi().alert("Por favor, ingresa un año y un mes válidos en las
celdas A1 y A2.");
return;
}
// Escribir días del mes
var fila = 4;
var columna = diaInicial; // La columna donde empieza el primer día