Tipos de eventos

En esta página, se explica la propiedad eventType y las especificaciones de los tipos de eventos disponibles en la API de Calendario de Google.

El Calendario de Google permite a los usuarios crear eventos genéricos, así como eventos diseñados para casos de uso específicos y con propiedades personalizadas.

Puedes descubrir el tipo de evento en los siguientes lugares de la API:

  • Todos los eventos muestran un eventType.
  • Establece eventType cuando crees o actualices un recurso de evento. Si no se establece, la API usa 'default'.
  • Especifica eventTypes en una events.list llamada para enumerar eventos de tipos específicos. Si no se especifica un tipo, la API muestra todos los tipos de eventos.
  • Especifica eventTypes en una llamada a events.watch para suscribirte a las actualizaciones de eventos de tipos específicos. Si no se especifica un tipo, la solicitud se suscribe a todos los tipos de eventos.

Evento predeterminado

Los eventos con el tipo de evento default se crean y se usan como uno de los recursos principales de la API de Calendar. Admiten una amplia variedad de propiedades para personalizar aún más el evento.

Consulta Crea eventos para comenzar a trabajar con eventos del Calendario.

Fecha de nacimiento

Las fechas de nacimiento son eventos especiales de todo el día con una recurrencia anual.

Los usuarios pueden crear eventos de cumpleaños de forma manual en el Calendario. Además, la información de cumpleaños se sincroniza con el Calendario cuando los usuarios agregan a una persona y su cumpleaños y otras fechas importantes a Contactos de Google. Los cumpleaños de los usuarios también se sincronizan con el Calendario desde su perfil de Cuenta de Google.

La API de Calendar admite los métodos events.get, events.instances y events.list para leer eventos de cumpleaños. Puedes establecer eventTypes en 'birthday' para enumerar solo los eventos de cumpleaños. Si no se especifica un tipo, la respuesta muestra los cumpleaños junto con todos los demás tipos de eventos.

En los objetos Event que se muestran, inspecciona el birthdayProperties campo para obtener más detalles sobre este evento especial. birthdayProperties tiene los siguientes campos:

  • type: Es el tipo de este evento especial, ya sea un cumpleaños, un aniversario o cualquier otra fecha importante.
  • customTypeName: Es la etiqueta especificada por el usuario para este evento especial. Se propaga si type es establecido en 'custom'.
  • contact: Es el nombre del recurso del contacto al que está vinculado este evento especial, si corresponde. Esto tiene el formato 'people/c12345' y se puede usar para recuperar detalles de contacto de la API de People.

La API te permite crear eventos de cumpleaños con el events.insert método con las siguientes especificaciones:

  • eventType se establece en 'birthday'.
  • start y end campos deben definir un evento de todo el día que abarque exactamente un día.
  • visibility el valor del campo debe ser 'private'.
  • transparency el valor del campo debe ser 'transparent'.
  • Debe tener una recurrencia anual, lo que significa que el recurrence campo debe ser 'RRULE:FREQ=YEARLY'. Los eventos de cumpleaños que caen el 29 de febrero deben tener la siguiente regla de recurrencia: 'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'.
  • Puede tener un colorId, summary, y reminders.
  • Puede tener birthdayProperties. Si se especifica, type debe ser 'birthday', y customTypeName y contact deben estar vacíos.
  • No puede tener ninguna otra propiedad de evento.

La API te permite actualizar el colorId, summary y el reminders de los eventos de cumpleaños con los métodos events.update y events.patch. También puedes actualizar start y end campos para cambiar la fecha del evento. En este caso, los valores nuevos deben definir un evento de todo el día que abarque exactamente un día. Los detalles de tiempo de un evento de cumpleaños no se pueden actualizar si el evento está vinculado a un contact o si su type es 'self'.

La API de Calendar no permite crear eventos de cumpleaños con birthdayProperties personalizados ni actualizar estas propiedades. Las fechas importantes se pueden editar con la API de People, y los cambios se sincronizan con el Calendario. Del mismo modo, los usuarios pueden editar su propia fecha de nacimiento en su perfil de Cuenta de Google, y se sincroniza con el Calendario.

Las solicitudes que intentan crear o actualizar una fecha de nacimiento de una manera no admitida fallan. En este caso, inspecciona el mensaje de error para identificar el problema.

La API admite la events.import operación para eventos de cumpleaños; sin embargo, el evento se importa como un evento predeterminado. En otras palabras, el eventType será 'default'.

La API admite el events.watch método para suscribirse a los cambios en los eventos de cumpleaños en el Calendario. Puedes establecer eventTypes en 'birthday' para suscribirte a las actualizaciones de los eventos de cumpleaños. Si no se especifica un tipo, la solicitud se suscribe a todos los tipos de eventos, incluidos los cumpleaños.

Puedes borrar eventos de cumpleaños con el events.delete método de la API de Calendar. Borrar un evento de cumpleaños del Calendario no afecta los datos de Contactos de Google ni del perfil de Cuenta de Google.

No se admite el cambio del organizador de un evento de cumpleaños con los events.move o events.update métodos.

Eventos de Gmail

Los eventos generados automáticamente desde Gmail tienen el tipo de evento 'fromGmail'.

La API de Calendar no permite crear este tipo de evento con el events.insert método.

La API te permite actualizar las propiedades extendidas colorId, reminders, visibility, transparency, status, attendees, private y shared con los métodos events.update y events.patch.

La API admite los events.get y events.list métodos para leer eventos de Gmail. Puedes establecer eventTypes en 'fromGmail' para enumerar solo los eventos generados desde Gmail. Si no se especifica un tipo, los eventos de Gmail se enumeran junto con todos los demás tipos de eventos.

La API admite el events.watch método para suscribirse a los cambios en los eventos de Gmail en el Calendario. Si no se especifica un tipo, la solicitud se suscribe a todos los tipos de eventos, incluido 'fromGmail'.

Puedes borrar eventos de Gmail con el events.delete método de la API de Calendar.

No se admite el cambio del organizador de un evento de Gmail con los events.move o events.update métodos.

Tiempo dedicado, fuera de la oficina y ubicación de trabajo

Puedes usar la API de Calendar para crear y administrar eventos que muestren el estado de los usuarios del Calendario.

Estas funciones solo están disponibles en los calendarios principales y para algunos usuarios del Calendario. Consulta Administra los eventos de tiempo dedicado, fuera de la oficina y ubicación de trabajo para obtener más información.

Explora los tipos de eventos en Apps Script

Apps Script es un lenguaje de secuencias de comandos en la nube basado en JavaScript que te permite crear aplicaciones empresariales que se integran con Google Workspace. Las secuencias de comandos se desarrollan en un editor de código basado en el navegador, y se almacenan y ejecutan en los servidores de Google. Consulta también la guía de inicio rápido de Apps Script para comenzar a usar Apps Script para enviar solicitudes a la API de Calendar.

En las siguientes instrucciones, se describe cómo leer y administrar eventos con la API de Calendar como un servicio avanzado en Apps Script. Para obtener una lista completa de los recursos y métodos de la API de Calendar, consulta la documentación de referencia.

Crea y configura la secuencia de comandos

  1. Para crear una secuencia de comandos, ve a script.google.com/create.
  2. En el panel izquierdo junto a Servicios, haz clic en Agregar un complemento de servicio .
  3. Selecciona API de Calendar y haz clic en Agregar.
  4. Después de habilitar la API, aparecerá en el panel izquierdo. Para enumerar los métodos y las clases disponibles en la API, escribe Calendar en el editor.

(Opcional) Actualiza el proyecto de Cloud

Cada proyecto de Apps Script tiene un proyecto de Cloud asociado. Tu secuencia de comandos puede usar el proyecto predeterminado que Apps Script crea automáticamente. Si deseas usar un proyecto de Cloud personalizado, consulta Cambia a otro proyecto de Cloud estándar. Después de configurar el proyecto de Cloud, selecciona Editor en el lado izquierdo para volver al editor de código.

Agrega código a la secuencia de comandos

En la siguiente muestra de código, se muestra cómo enumerar, leer y crear eventos con diferentes valores de eventType.

  1. Pega lo siguiente en el editor de código.

    const CALENDAR_ID = 'CALENDAR_ID' || 'primary';
    
    /** Lists default events. */
    function listDefaultEvents() {
      listEvents('default');
    }
    
    /** Lists birthday events. */
    function listBirthdays() {
      listEvents('birthday');
    }
    
    /** Lists events from Gmail. */
    function listEventsFromGmail() {
      listEvents('fromGmail');
    }
    
    /**
      * Lists events with the given event type. If no type is specified, lists all events.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list
      */
    function listEvents(eventType = undefined) {
      // Query parameters for the list request.
      const optionalArgs = {
        eventTypes: eventType ? [eventType] : undefined,
        singleEvents: true,
        timeMax: '2024-07-30T00:00:00+01:00',
        timeMin: '2024-07-29T00:00:00+01:00',
      }
      try {
        var response = Calendar.Events.list(CALENDAR_ID, optionalArgs);
        response.items.forEach(event => console.log(event));
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Reads the event with the given eventId.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get
      */
    function readEvent() {
      try {
        var response = Calendar.Events.get(CALENDAR_ID, 'EVENT_ID');
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /** Creates a default event. */
    function createDefaultEvent() {
      const event = {
        start: { dateTime: '2024-07-30T10:30:00+01:00'},
        end: { dateTime: '2024-07-30T12:30:00+01:00'},
        description: 'Created from Apps Script.',
        eventType: 'default',
        summary: 'Sample event',
      }
      createEvent(event);
    }
    
    /** Creates a birthday event. */
    function createBirthday() {
      const event = {
        start: { date: '2024-01-29' },
        end: { date: '2024-01-30' },
        eventType: 'birthday',
        recurrence: ["RRULE:FREQ=YEARLY"],
        summary: "My friend's birthday",
        transparency: "transparent",
        visibility: "private",
      }
      createEvent(event);
    }
    
    /**
      * Creates a Calendar event.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert
      */
    function createEvent(event) {
    
      try {
        var response = Calendar.Events.insert(event, CALENDAR_ID);
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    

    Reemplaza lo siguiente:

    • CALENDAR_ID: Es la dirección de correo electrónico del calendario en el que se recuperan y crean eventos. Esta constante se establece inicialmente en 'primary', que es una palabra clave para acceder al calendario principal del usuario que accedió. Si cambias este valor, podrás leer eventos en los calendarios de otros usuarios a los que tengas acceso.
    • EVENT_ID: Es el ID del evento. Puedes llamar a events.list para recuperar IDs de eventos.

Ejecuta la muestra de código

  1. Sobre el editor de código, selecciona la función que deseas ejecutar en el menú desplegable y haz clic en Ejecutar.
  2. La primera vez que ejecutes la secuencia de comandos, se te solicitará que autorices el acceso. Revisa y permite que Apps Script acceda a tu calendario.
  3. Puedes inspeccionar los resultados de la ejecución de la secuencia de comandos en el Registro de ejecución que aparece en la parte inferior de la ventana.