Events: import

Importa un evento. Esta operación se usa para agregar una copia privada de un evento existente a un calendario. Pruébalo ahora y ve un ejemplo.

Solicitud

Solicitud HTTP

POST https://www.googleapis.com/calendar/v3/calendars/calendarId/events/import

Parámetros

Nombre del parámetro Valor Descripción
Parámetros de ruta de acceso
calendarId string Es el identificador del calendario. Para recuperar los ID de calendario, llama al método calendarList.list. Si quieres acceder al calendario principal del usuario actual, usa la palabra clave “primary”.
Parámetros de consulta opcionales
conferenceDataVersion integer Número de versión de los datos de conferencia que admite el cliente de la API. La versión 0 no supone que se admiten datos de conferencia y, además, ignora los datos de conferencia en el cuerpo del evento. La versión 1 habilita la compatibilidad con la copia de ConferenceData y también para la creación de nuevas conferencias mediante el campo createRequest deferenceData. El valor predeterminado es 0. Los valores aceptables son 0 a 1, ambos inclusive.
supportsAttachments boolean Indica si el cliente de API que realiza la operación admite adjuntos de eventos. Opcional. El valor predeterminado es False.

Autorización

Esta solicitud requiere autorización con al menos uno de los siguientes alcances:

Permiso
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events

Para obtener más información, consulta la página de autenticación y autorización.

Cuerpo de la solicitud

En el cuerpo de la solicitud, proporciona un recurso de eventos con las siguientes propiedades:

Nombre de la propiedad Valor Descripción Notas
Propiedades obligatorias
end nested object La hora de finalización (exclusiva) del evento. En el caso de un evento recurrente, esta es la hora de finalización de la primera instancia.
iCalUID string Es el identificador único del evento, como se define en RFC5545. Se utiliza para identificar eventos de manera única en sistemas de calendario y debe proporcionarse cuando se importan eventos a través del método import.

Ten en cuenta que iCalUID y id no son idénticos y solo se debe proporcionar uno de ellos en el momento de la creación del evento. Una diferencia en su semántica es que, en los eventos recurrentes, todos los casos de un evento tienen diferentes id, mientras que todos comparten los mismos iCalUID. Para recuperar un evento mediante su iCalUID, llama al método events.list con el parámetro iCalUID. Para recuperar un evento mediante su id, llama al método events.get.

start nested object La hora de inicio (incluida) del evento En el caso de un evento recurrente, esta es la hora de inicio de la primera instancia.
Propiedades opcionales
anyoneCanAddSelf boolean Indica si alguien puede invitarse a sí mismo al evento (obsoleto). Opcional. El valor predeterminado es False. admite escritura
attachments[].fileUrl string vínculo de URL al archivo adjunto.

Para agregar archivos adjuntos de Google Drive, usa el mismo formato que en la propiedad alternateLink del recurso Files en la API de Drive.

Obligatorio cuando se agrega un archivo adjunto.

admite escritura
attendees[] list Los asistentes del evento. Consulta la guía Eventos con asistentes para obtener más información sobre cómo programar eventos con otros usuarios de calendario. Las cuentas de servicio deben usar la delegación de autoridad de todo el dominio para propagar la lista de asistentes. admite escritura
attendees[].additionalGuests integer Cantidad de invitados adicionales Opcional. El valor predeterminado es 0. admite escritura
attendees[].comment string Comentario en la respuesta del asistente. Opcional. admite escritura
attendees[].displayName string Nombre del asistente, si está disponible. Opcional. admite escritura
attendees[].email string La dirección de correo electrónico del asistente, si está disponible Este campo debe estar presente cuando se agregue un asistente. Debe ser una dirección de correo electrónico válida según RFC5322.

Obligatorio cuando se agrega un asistente.

admite escritura
attendees[].optional boolean Si se trata de un asistente opcional. Opcional. El valor predeterminado es False. admite escritura
attendees[].resource boolean Si el asistente es un recurso Solo se puede establecer cuando el asistente se agrega al evento por primera vez. Se ignorarán las modificaciones posteriores. Opcional. El valor predeterminado es False. admite escritura
attendees[].responseStatus string Estado de respuesta del asistente. Los valores posibles son:
  • "needsAction": El asistente no respondió a la invitación (recomendado para nuevos eventos).
  • "declined": El asistente rechazó la invitación.
  • "tentative": El asistente aceptó la invitación de manera provisoria.
  • "accepted": El asistente aceptó la invitación.
admite escritura
attendeesOmitted boolean Si los asistentes se pueden haber omitido de la representación del evento. Cuando se recupera un evento, puede deberse a una restricción especificada por el parámetro de consulta maxAttendee. Cuando se actualiza un evento, esto solo se puede usar para actualizar la respuesta del participante. Opcional. El valor predeterminado es False. admite escritura
colorId string El color del evento. Este es un ID que hace referencia a una entrada en la sección event de la definición de colores (consulta el extremo de colores). Opcional. admite escritura
conferenceData nested object Información relacionada con la conferencia, como los detalles de una conferencia de Google Meet Para crear nuevos detalles de la conferencia, usa el campo createRequest. Para conservar los cambios, recuerda establecer el parámetro de solicitud conferenceDataVersion en 1 para todas las solicitudes de modificación de eventos. admite escritura
description string Descripción del evento. Puede contener HTML. Opcional. admite escritura
end.date date La fecha, en el formato "aaaa-mm-dd", si el evento dura todo el día. admite escritura
end.dateTime datetime La hora, como un valor combinado de fecha y hora (con el formato RFC3339) El desfase de zona horaria es obligatorio, a menos que se especifique una zona horaria de forma explícita en timeZone. admite escritura
end.timeZone string La zona horaria en la que se especifica el horario. (tiene el formato del nombre de la base de datos de zonas horarias de IANA, p.ej., “Europe/Zurich”). Para los eventos recurrentes, este campo es obligatorio y especifica la zona horaria en que se expande la recurrencia. En el caso de los eventos individuales, este campo es opcional e indica una zona horaria personalizada para el inicio y la finalización del evento. admite escritura
extendedProperties.private object Las propiedades que son privadas para la copia del evento que aparece en este calendario. admite escritura
extendedProperties.shared object Propiedades que se comparten entre las copias del evento en los calendarios de otros asistentes admite escritura
focusTimeProperties nested object Datos de eventos de Tiempo dedicado. Se usa si eventType es focusTime. admite escritura
gadget.display string Modo de visualización del gadget. Ya no está disponible. Los valores posibles son:
  • "icon": El gadget se muestra junto al título del evento en la vista del calendario.
  • "chip": El gadget se muestra cuando se hace clic en el evento.
admite escritura
gadget.height integer La altura del gadget en píxeles. La altura debe ser un número entero mayor que 0. Opcional. Ya no está disponible. admite escritura
gadget.preferences object Preferencias. admite escritura
gadget.title string Título del gadget. Ya no está disponible. admite escritura
gadget.type string El tipo de gadget. Ya no está disponible. admite escritura
gadget.width integer El ancho del gadget en píxeles. El ancho debe ser un número entero mayor que 0. Opcional. Ya no está disponible. admite escritura
guestsCanInviteOthers boolean Indica si los asistentes que no son el organizador pueden invitar a otras personas al evento. Opcional. El valor predeterminado es True. admite escritura
guestsCanModify boolean Indica si los asistentes que no son el organizador pueden modificar el evento. Opcional. El valor predeterminado es False. admite escritura
guestsCanSeeOtherGuests boolean Indica si los asistentes que no son el organizador pueden ver quiénes son los asistentes al evento. Opcional. El valor predeterminado es True. admite escritura
location string Ubicación geográfica del evento, como texto sin formato. Opcional. admite escritura
organizer object Es el organizador del evento. Si el organizador también es asistente, esto se indica con una entrada separada en attendees con el campo organizer establecido en Verdadero. Para cambiar el organizador, usa la operación mover. Solo lectura, excepto cuando se importa un evento. admite escritura
organizer.displayName string Nombre del organizador, si está disponible. admite escritura
organizer.email string Es la dirección de correo electrónico del organizador, si está disponible. Debe ser una dirección de correo electrónico válida según RFC5322. admite escritura
originalStartTime.date date La fecha, en el formato "aaaa-mm-dd", si el evento dura todo el día. admite escritura
originalStartTime.dateTime datetime La hora, como un valor combinado de fecha y hora (con el formato RFC3339) El desfase de zona horaria es obligatorio, a menos que se especifique una zona horaria de forma explícita en timeZone. admite escritura
originalStartTime.timeZone string La zona horaria en la que se especifica el horario. (tiene el formato del nombre de la base de datos de zonas horarias de IANA, p.ej., “Europe/Zurich”). Para los eventos recurrentes, este campo es obligatorio y especifica la zona horaria en que se expande la recurrencia. En el caso de los eventos individuales, este campo es opcional e indica una zona horaria personalizada para el inicio y la finalización del evento. admite escritura
outOfOfficeProperties nested object Datos de eventos fuera de la oficina. Se usa si eventType es outOfOffice. admite escritura
recurrence[] list Lista de líneas RRULE, EXRULE, RDATE y EXDATE para un evento recurrente, como se especifica en RFC5545. Ten en cuenta que no se permiten las líneas DTSTART y DTEND en este campo. Las horas de inicio y finalización del evento se especifican en los campos start y end. Este campo se omite para eventos individuales o instancias de eventos recurrentes. admite escritura
reminders.overrides[] list Si el evento no utiliza los recordatorios predeterminados, se muestran los recordatorios específicos del evento o, si no se establecen, se indican que no hay recordatorios establecidos para ese evento. La cantidad máxima de recordatorios de anulación es 5. admite escritura
reminders.overrides[].method string Es el método que usa este recordatorio. Los valores posibles son:
  • "email": Los recordatorios se envían por correo electrónico.
  • "popup": Los recordatorios se envían a través de una ventana emergente de la IU.

Obligatorio al agregar un recordatorio.

admite escritura
reminders.overrides[].minutes integer Cantidad de minutos antes del inicio del evento en los que se debe activar el recordatorio. Los valores válidos se encuentran entre 0 y 40,320 (4 semanas en minutos).

Obligatorio al agregar un recordatorio.

admite escritura
reminders.useDefault boolean Si los recordatorios predeterminados del calendario se aplican al evento admite escritura
sequence integer Número de secuencia según iCalendar. admite escritura
source.title string Título de la fuente; por ejemplo, el título de una página web o el asunto de un correo electrónico. admite escritura
source.url string URL de la fuente que apunta a un recurso. El esquema de URL debe ser HTTP o HTTPS. admite escritura
start.date date La fecha, en el formato "aaaa-mm-dd", si el evento dura todo el día. admite escritura
start.dateTime datetime La hora, como un valor combinado de fecha y hora (con el formato RFC3339) El desfase de zona horaria es obligatorio, a menos que se especifique una zona horaria de forma explícita en timeZone. admite escritura
start.timeZone string La zona horaria en la que se especifica el horario. (tiene el formato del nombre de la base de datos de zonas horarias de IANA, p.ej., “Europe/Zurich”). Para los eventos recurrentes, este campo es obligatorio y especifica la zona horaria en que se expande la recurrencia. En el caso de los eventos individuales, este campo es opcional e indica una zona horaria personalizada para el inicio y la finalización del evento. admite escritura
status string Estado del evento. Opcional. Los valores posibles son:
  • "confirmed": El evento se confirmó. Este es el estado predeterminado.
  • "tentative": El evento se confirmó de manera provisoria.
  • "cancelled": El evento se cancela (borrado). El método list muestra eventos cancelados solo en la sincronización incremental (cuando se especifica syncToken o updatedMin) o si la marca showDeleted se establece en true. El método get siempre los muestra.

    Un estado cancelado representa dos estados diferentes según el tipo de evento:

    1. Las excepciones canceladas de un evento recurrente sin cancelar indican que esta instancia ya no se debe presentar al usuario. Los clientes deben almacenar estos eventos durante toda la vida útil del evento recurrente principal.

      Solo se garantiza que las excepciones canceladas tengan completados los valores de los campos id, recurringEventId y originalStartTime. Es posible que los otros campos estén vacíos.

    2. Todos los demás eventos cancelados representan eventos borrados. Los clientes deben quitar las copias sincronizadas de forma local. Esos eventos cancelados desaparecerán con el tiempo, así que no confíes en que estén disponibles de forma indefinida.

      Solo se garantiza que los eventos borrados tengan propagado el campo id.

    En el calendario del organizador, los eventos cancelados siguen mostrando los detalles del evento (resumen, ubicación, etc.) para que se puedan restablecer (recuperar). Del mismo modo, los eventos a los que se invitó al usuario y que este quitó manualmente siguen brindando detalles. Sin embargo, las solicitudes de sincronización incremental con showDeleted establecido en falso no mostrarán estos detalles.

    Si un evento cambia de su organizador (por ejemplo, mediante la operación move) y el organizador original no está en la lista de asistentes, dejará un evento cancelado, en el que solo se garantiza que se propagará el campo id.

admite escritura
summary string Corresponde al título del evento. admite escritura
transparency string Indica si el evento bloquea tiempo en el calendario. Opcional. Los valores posibles son:
  • "opaque": Valor predeterminado. El evento sí asigna un horario en el calendario. Esto equivale a configurar Show me as como Busy en la IU del calendario.
  • "transparent": El evento no bloquea la hora del calendario. Esto equivale a configurar Mostrar como en Disponible en la IU del Calendario.
admite escritura
visibility string Visibilidad del evento Opcional. Los valores posibles son:
  • "default": Usa la visibilidad predeterminada para los eventos del calendario. Este es el valor predeterminado.
  • "public": El evento es público y los detalles del evento son visibles para todos los lectores del calendario.
  • "private": El evento es privado y solo los asistentes pueden ver los detalles del evento.
  • "confidential": El evento es privado. Este valor se proporciona por motivos de compatibilidad.
admite escritura

Respuesta

Si se aplica de forma correcta, este método muestra un recurso de eventos en el cuerpo de la respuesta.

Ejemplos

Nota: Los ejemplos de código disponibles para este método no representan todos los lenguajes de programación admitidos (consulta la página de bibliotecas cliente para consultar una lista de lenguajes admitidos).

Java

Usa la biblioteca cliente de Java.

import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventAttendee;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.api.client.util.DateTime;

import java.util.Date;
// ...

// Initialize Calendar service with valid OAuth credentials
Calendar service = new Calendar.Builder(httpTransport, jsonFactory, credentials)
    .setApplicationName("applicationName").build();

// Create and initialize a new event (could also retrieve an existing event)
Event event = new Event();
event.setICalUID("originalUID");

Event.Organizer organizer = new Event.Organizer();
organizer.setEmail("organizerEmail");
organizer.setDisplayName("organizerDisplayName");
event.setOrganizer(organizer);

ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
attendees.add(new EventAttendee().setEmail("attendeeEmail"));
// ...
event.setAttendees(attendees);

Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + 3600000);
DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
event.setStart(new EventDateTime().setDateTime(start));
DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
event.setEnd(new EventDateTime().setDateTime(end));

// Import the event into a calendar
Event importedEvent = service.events().calendarImport('primary', event).execute();

System.out.println(importedEvent.getId());

Python

Usa la biblioteca cliente de Python.

event = {
  'summary': 'Appointment',
  'location': 'Somewhere',
  'organizer': {
    'email': 'organizerEmail',
    'displayName': 'organizerDisplayName'
  },
  'start': {
    'dateTime': '2011-06-03T10:00:00.000-07:00'
  },
  'end': {
    'dateTime': '2011-06-03T10:25:00.000-07:00'
  },
  'attendees': [
    {
      'email': 'attendeeEmail',
      'displayName': 'attendeeDisplayName',
    },
    # ...
  ],
  'iCalUID': 'originalUID'
}

imported_event = service.events().import_(calendarId='primary', body=event).execute()

print imported_event['id']

PHP

Usa la biblioteca cliente de PHP.

$event = new Google_Service_Calendar_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2011-06-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('attendeeEmail');
// ...
$attendees = array($attendee1,
                   // ...,
                  );
$event->attendees = $attendees;
$organizer = new Google_Service_Calendar_EventOrganizer();
$organizer->setEmail('organizerEmail');
$organizer->setDisplayName('organizerDisplayName');
$event->setOrganizer($organizer);
$event->setICalUID('originalUID');
$importedEvent = $service->events->import('primary', $event);

echo $importedEvent->getId();

Ruby

Usa la biblioteca cliente Ruby.

event = Google::Apis::CalendarV3::Event.new(
  summary: 'Appointment',
  location: 'Somewhere',
  organizer: {
    email: 'organizerEmail',
    display_name: 'organizerDisplayName'
  },
  start: {
    date_time: '2011-06-03T10:00:00.000-07:00'
  },
  end: {
    date_time: '2011-06-03T10:25:00.000-07:00'
  },
  attendees: [
    {
      email: 'attendeeEmail',
      display_name: 'attendeeDisplayName',
    },
    # ...
  ],
  i_cal_uid: 'originalUID'
)
result = client.import_event('primary', event)
print result.id

Pruébala

Usa el Explorador de APIs que aparece a continuación para llamar a este método con datos en tiempo real y ver la respuesta.