COMO CREAR EVENTOS EN GOOGLE CALENDAR DESDE GOOGLE SHEETS


¿Sabían que pueden crear eventos en Google Calendar directamente desde Google Sheets? Esta integración nos permite automatizar la creación de eventos y aprovechar los beneficios de las hojas de calculo como: ahorrar tiempo y esfuerzo, organizar, filtrar y gestionar la información de una manera que no es directamente posible en Google Calendar.

En un tutorial anterior, les enseñe como crear una Agenda Dinámica en Google Sheets y ese será nuestro diseño base, sin embargo, en Calendar necesitamos datos específicos para la creación de cada evento, así que las opciones pueden variar un poco. Si tienen dudas pueden consultar el   Video Tutorial.

{tocify} $title={Tabla de Contenido} 

CONFIGURAR ZONA HORARIA

Es importante que la zona horaria este configurada correctamente en todo nuestro proyecto, con esto evitaremos desfases en los horarios al crear los eventos en Calendar.

  • En Google Sheets: abrir la hoja de calculo, ir a Archivo > Configuración > Zona horaria.
  • En Apps Script: abrir la hoja de calculo, ir a Extensiones > Apps Script, una vez que se abre el proyecto desde el panel izquierdo ir al icono de engranaje ⚙️ > Configuración del Proyecto > Zona horaria.
  • En Google Calendar: abrir Calendar, ir al icono de engranaje ⚙️> Configuración > Zona horaria. En calendarios creados seleecionar los tres puntos verticales "⋮" > Config. y uso compartido > Zona horaria.

DISEÑO DE LA AGENDA

Al crear un evento en Calendar requerimos información especifica como: fecha, hora, persona, email, lugar y detalles, así que es necesario tener una especie de formulario con estas opciones y celdas vacias para el ingreso de datos. Adicional, considero necesario aplicar formatos y validación de celdas.


  • Para cambiar el formato de fecha y hora: Formato > Numero > Fecha y hora personalizada.
  • Para insertar calendario en celda: Datos > Validación de Datos > Es una fecha exacta.
  • Para validar correo: Datos > Validación de Datos > El texto es un correo electrónico valido.

IMPLEMENTACION DE LA MACRO EN APPSCRIPT

Ahora necesitamos preparar el entorno de programación para que pueda interactuar con nuestro calendario.

Añadir los servicios del Calendario

Para que la macro pueda crear eventos, necesitamos habilitar el servicio del Calendario. En el proyecto de Apps Script vamos a Servicios y seleccionamos el icono de más "+", buscamos Google Calendar Api y finalizamos con "Añadir" para aplicar los cambios.


Obtener el ID del Calendario

Abrimos Google Calendar, en el panel izquierdo, junto a "Otros Calendarios" seleccionamos el icono más "+" > Crear Calendario. Asignamos un nombre, nos aseguramos que la zona horaria sea la correcta y finalizamos con Crear Calendario.


Para obtener el id, en el calendario creado, seleccionamos los tres puntos verticales "" > Config. y Uso compartido > Integrar Calendario > ID Calendario.

Macro para Crear Eventos

A continuación, les comparto la macro que deben copiar y pegar en su proyecto. Recuerden que, desde la hoja de calculo, van a Extensiones > Apps Script y en el editor pegan el código. Si lo consideran necesario, pueden editar los datos que consideren necesarios como: el ID del calendario, los rangos de donde se obtiene los datos para crear el evento o los avisos de confirmación.

👀 VER MACRO:    
    function agregarEventoACalendar() {
      var hojaActiva = SpreadsheetApp.getActiveSpreadsheet();
      var agendaHoja = hojaActiva.getSheetByName('Eventos');
    
      // Pega el ID de tu calendario directamente
      var calendarId = '8f821bb0d9f4e9107aa15f2c7b7983c9b375e04c94e1ccbbd8f9a6ad45674d32@group.calendar.google.com'; // Reemplaza con tu ID de calendario 
      var calendar = CalendarApp.getCalendarById(calendarId);
    
      var datosEvento = agendaHoja.getRange('B3:B9').getValues();
    
      var fecha = datosEvento[0][0]; 
      var hora = datosEvento[1][0];   
      var persona = datosEvento[2][0];
      var emailInvitado = datosEvento[3][0]; 
      var eventoTitulo = datosEvento[4][0]; 
      var lugar = datosEvento[5][0]; 
      var detalles = datosEvento[6][0]; 
    
      agendaHoja.insertRowsBefore(12, 1);
    
      var nuevaFilaDatos = [
        'Programado',       
        fecha,              
        hora,               
        persona,          
        emailInvitado,    
        eventoTitulo,     
        lugar,            
        detalles          
      ];
    
      agendaHoja.getRange(12, 1, 1, nuevaFilaDatos.length).setValues([nuevaFilaDatos]);
    
      agendaHoja.getRange('B5:B9').clearContent();
    
      var tiempoInicio;
      try {
        var horaValue = (hora instanceof Date) ? hora.getHours() : 0;
        var minutoValue = (hora instanceof Date) ? hora.getMinutes() : 0;
    
        tiempoInicio = new Date(fecha);
        tiempoInicio.setHours(horaValue);
        tiempoInicio.setMinutes(minutoValue);
        tiempoInicio.setSeconds(0);
        tiempoInicio.setMilliseconds(0);
      } catch (e) {
        Browser.msgBox('Error de Fecha/Hora', 'Verifica que la FECHA y HORA sean formatos válidos. Error: ' + e.message, Browser.Buttons.OK);
        return;
      }
    
      var tiempoFin = new Date(tiempoInicio.getTime() + (60 * 60 * 1000));
    
      var eventoTituloCalendar = eventoTitulo + ' - ' + persona;
    
      var eventoDescripcionCalendar = 'Detalles: ' + detalles;
      if (lugar) {
        eventoDescripcionCalendar += '\nLugar: ' + lugar;
      }
      if (emailInvitado) {
        eventoDescripcionCalendar += '\nInvitado: ' + emailInvitado;
      }
    
      var opciones = {
        description: eventoDescripcionCalendar,
        location: lugar,
        guests: emailInvitado, 
        sendInvites: true    
      };
    
      try {
        var eventoGCalendar = calendar.createEvent(eventoTituloCalendar, tiempoInicio, tiempoFin, opciones);
        Browser.msgBox('✅ Evento Creado ', 'Evento "' + eventoGCalendar.getTitle() + '" creado en Google Calendar y datos guardados en la hoja.', Browser.Buttons.OK);
      } catch (e) {
        Browser.msgBox('⚠️ Error de Calendar', 'No se pudo crear el evento en Google Calendar. Verifica que el ID del calendario sea correcto y que la fecha/hora sean válidas. Error: ' + e.message, Browser.Buttons.OK);
      }
    };
    

CREAR Y ASIGNAR BOTON PARA LA MACRO

Para facilitar la ejecución de la macro, pueden crear un botón desde la hoja de calculo lo cual es muy fácil, van a Insertar > Dibujo y personalizan su botón. Una vez que obtengan el resultado deseado eligen Guardar y Cerrar, esto colocara la imagen sobre celdas.


Para asignarle la macro, hacen clic derecho sobre el dibujo o en los tres puntos verticales de la imagen  y en Asignar secuencia de comandos, en la ventana que aparece escriben exactamente agregarEventoACalendar y finalizan con "Aceptar" para guardar los cambios. Por ultimo presionan el botón y autorizan todos los permisos necesarios para que pueda funcionar correctamente la creación de los eventos.

Publicar un comentario

Artículo Anterior Artículo Siguiente