En este tutorial te voy a mostrar cómo crear múltiples eventos en Google Calendar desde Google Sheets usando Google Apps Script. La idea es que puedas automatizar la creación de eventos masivos en un calendario específico, lo cual es súper útil para organizar conferencias, talleres o cualquier agenda con muchos eventos. Además, te enseñaré a crear un menú personalizado para que ejecutes el script fácilmente sin tener que entrar al editor cada vez.
Si prefieres ver este tutorial en video, te los dejo a continuación para que puedas seguir paso a paso.
Paso 1: Crear un calendario específico en Google Calendar
Primero, vamos a crear un calendario nuevo que usaremos para alojar todos los eventos. Esto es importante para mantener organizados los eventos y no mezclarlos con otros que tengas en tu cuenta. Para esto, usamos Google Apps Script con el siguiente código:
function crearCalendario() {
var calendar = CalendarApp.createCalendar('Primera Convención de Sheets');
Logger.log('ID del calendario: ' + calendar.getId());
}
Este código crea un calendario llamado «Primera Convención de Sheets» y muestra su ID en el registro de ejecución (Logger). Ese ID es clave porque lo usaremos para referenciar el calendario cuando creemos los eventos masivos.
Para ver el ID, en el editor de Apps Script ve a Ver > Registro después de ejecutar la función.
Paso 2: Preparar los datos de eventos en Google Sheets
Ahora, en Google Sheets, organizamos la información de los eventos que queremos crear. La estructura básica debe incluir el nombre del evento, fecha, hora de inicio, hora de fin, ubicación y el correo del conferencista o invitado. Aquí un ejemplo de cómo se vería:
| Evento | Fecha | Hora Inicio | Hora Fin | Ubicación | Conferencista |
|---|---|---|---|---|---|
| Evento 1 | 2024-07-07 | 08:00 | 09:00 | Virtual | conferencista1@gmail.com |
| Evento 2 | 2024-07-07 | 09:00 | 10:00 | Virtual | conferencista2@gmail.com |
| Evento 3 | 2024-07-08 | 08:00 | 09:00 | Virtual | conferencista3@gmail.com |
| … | … | … | … | … | … |
Es importante que las fechas estén en formato de fecha y las horas en formato de hora para que el script pueda interpretarlas correctamente. Además, la fila 1 debe contener los encabezados y los datos empiezan desde la fila 2.
Paso 3: Crear eventos en el calendario desde Google Sheets
Ahora vamos con el script que leerá cada fila de la hoja y creará un evento en el calendario que especificamos con el ID. Este es el código completo:
function crearEventosDesdeSheets() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Hoja1');
var lastRow = sheet.getLastRow();
var calendarId = 'ID_DEL_CALENDARIO'; // Reemplaza con el ID real
var calendar = CalendarApp.getCalendarById(calendarId);
for (var i = 2; i <= lastRow; i++) {
var nombreEvento = sheet.getRange(i; 1).getValue();
var fecha = sheet.getRange(i; 2).getValue();
var horaInicio = sheet.getRange(i; 3).getValue();
var horaFin = sheet.getRange(i; 4).getValue();
var ubicacion = sheet.getRange(i; 5).getValue();
var conferencista = sheet.getRange(i; 6).getValue();
// Construir la fecha y hora de inicio
var fechaInicio = new Date(fecha);
fechaInicio.setHours(horaInicio.getHours());
fechaInicio.setMinutes(horaInicio.getMinutes());
// Construir la fecha y hora de fin
var fechaFin = new Date(fecha);
fechaFin.setHours(horaFin.getHours());
fechaFin.setMinutes(horaFin.getMinutes());
// Crear el evento en el calendario
calendar.createEvent(nombreEvento; fechaInicio; fechaFin; {
location: ubicacion;
guests: conferencista
});
// Marcar como creado para saber que ya se procesó
sheet.getRange(i; 7).setValue('Creado');
}
}
Detalles importantes:
- Reemplaza
ID_DEL_CALENDARIOpor el ID que obtuviste en el paso 1. - El script asume que la hoja se llama «Hoja1», si la tuya tiene otro nombre, cámbialo en el código.
- La columna 7 (columna G) se usa para marcar que el evento ya fue creado, así evitas duplicados si ejecutas el script varias veces.
Paso 4: Añadir un menú personalizado para ejecutar el script fácilmente
Para no tener que entrar al editor de Apps Script cada vez que quieras crear los eventos, vamos a agregar un menú personalizado en Google Sheets. Así podrás ejecutar la función desde un botón en la hoja.
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Eventos')
.addItem('Crear todos los eventos', 'crearEventosDesdeSheets')
.addToUi();
}
Con este menú, cada vez que abras la hoja verás una opción llamada «Eventos» en la barra superior, y dentro de ella un botón que dice «Crear todos los eventos». Solo dale clic y el script hará su magia.
Paso 5: Probar y validar
Guarda todos los cambios en el editor de Apps Script y regresa a tu hoja. Recarga la página para que se cargue el nuevo menú. Luego, en el menú «Eventos», selecciona «Crear todos los eventos». El script leerá cada fila, creará los eventos en el calendario y marcará con «Creado» para que sepas cuáles ya están procesados.
Si el script falla, revisa que el ID del calendario sea correcto y que tengas permisos para crear eventos en ese calendario.
Conclusión
En resumen, aprendimos a crear un calendario específico, preparar los datos en Sheets, crear eventos masivos desde un script, y facilitar la ejecución con un menú personalizado. Esto te ahorra mucho tiempo y errores al gestionar eventos masivos, ideal para conferencias, cursos o agendas complejas.
Como siguiente paso, puedes explorar cómo enviar notificaciones automáticas o sincronizar con otros sistemas usando Google Apps Script. También te recomiendo aprender más sobre Google Apps Script en mi curso avanzado para sacarle todo el provecho a estas automatizaciones.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.