Events: insert

Crea un evento. Pruébalo ahora y ve un ejemplo.

Solicitud

Solicitud HTTP

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

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 del calendario, llama al método calendarList.list. Si deseas acceder al calendario principal del usuario que accedió actualmente, usa la palabra clave "primary".
Parámetros de consulta opcionales
conferenceDataVersion integer Es el número de versión de los datos de la conferencia que admite el cliente de la API. La versión 0 supone que no es compatible con los datos de la conferencia e ignora los datos de la conferencia en el cuerpo del evento. La versión 1 habilita la compatibilidad con la copia de ConferenceData y la creación de conferencias nuevas con el campo createRequest de conferenceData. El valor predeterminado es 0. Los valores aceptables son 0 a 1, ambos inclusive.
maxAttendees integer Es la cantidad máxima de asistentes que se deben incluir en la respuesta. Si hay más de la cantidad especificada de asistentes, solo se muestra el participante. Opcional.
sendNotifications boolean Obsoleta. En su lugar, usa sendUpdates.

Determina si se deben enviar notificaciones sobre la creación del evento nuevo. Ten en cuenta que es posible que se envíen algunos correos electrónicos incluso si estableces el valor en false. El valor predeterminado es false.
sendUpdates string Establece si se deben enviar notificaciones sobre la creación del nuevo evento. Ten en cuenta que es posible que se sigan enviando algunos correos electrónicos. El valor predeterminado es false.

Los valores aceptables son los siguientes:
  • "all": Las notificaciones se envían a todos los invitados.
  • "externalOnly": Las notificaciones solo se envían a los invitados que no usan el Calendario de Google.
  • "none": No se envían notificaciones.
supportsAttachments boolean Indica si el cliente de la API que realiza la operación admite archivos adjuntos de eventos. Opcional. El valor predeterminado es False.

Autorización

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

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

Para obtener más información, consulta la página 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 Hora de finalización (exclusiva) del evento. Para un evento recurrente, esta es la hora de finalización de la primera instancia.
start nested object Hora de inicio (inclusiva) del evento. En el caso de un evento recurrente, esta es la hora de inicio de la primera instancia.
Propiedades opcionales
anyoneCanAddSelf boolean Si alguien puede invitarse a sí mismo al evento (no disponible) Opcional. El valor predeterminado es False. admite escritura
attachments[].fileUrl string Es el 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 al evento. Consulta la guía Eventos con asistentes para obtener más información sobre cómo programar eventos con otros usuarios del calendario. Las cuentas de servicio deben usar la delegación de autoridad en 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 Es el comentario de respuesta del asistente. Opcional. admite escritura
attendees[].displayName string El 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 agrega 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 Indica si el asistente es un recurso. Solo se puede establecer cuando el asistente se agrega al evento por primera vez. Las modificaciones posteriores se ignorarán. Opcional. El valor predeterminado es False. admite escritura
attendees[].responseStatus string Estado de respuesta del asistente. Los valores posibles son los siguientes:
  • 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 forma provisoria.
  • "accepted": El asistente aceptó la invitación.
admite escritura
birthdayProperties nested object Datos de cumpleaños o eventos especiales Se usa si eventType es "birthday". Inmutable. admite escritura
birthdayProperties.type string Tipo de cumpleaños o evento especial Los valores posibles son los siguientes:
  • "anniversary": Es un aniversario que no es el cumpleaños. Siempre tiene un contact.
  • "birthday": Un evento de cumpleaños. Este es el valor predeterminado.
  • "custom": Es una fecha especial cuya etiqueta se especifica con mayor detalle en el campo customTypeName. Siempre tiene un contact.
  • "other": Es una fecha especial que no se incluye en las otras categorías y no tiene una etiqueta personalizada. Siempre tiene un contact.
  • "self": Es el cumpleaños del propietario del calendario. No puede tener un contact.
La API de Calendar solo admite la creación de eventos con el tipo "birthday". No se puede cambiar el tipo después de crear el evento.
admite escritura
colorId string Es 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 La 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 Es la fecha, en formato "aaaa-mm-dd", si se trata de un evento de todo el día. admite escritura
end.dateTime datetime La hora, como un valor de fecha y hora combinado (con el formato de RFC3339) Se requiere una compensación de zona horaria, a menos que se especifique una zona horaria de forma explícita en timeZone. admite escritura
end.timeZone string Es la zona horaria en la que se especifica la hora. (con el formato de un 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 la que se expande la recurrencia. Para eventos individuales, este campo es opcional y indica una zona horaria personalizada para el inicio o la finalización del evento. admite escritura
eventType string Es el tipo específico del evento. No se puede modificar después de crear el evento. Los valores posibles son los siguientes:
  • "birthday": Es un evento especial que dura todo el día con una recurrencia anual.
  • "default": Es un evento normal o no se especifica más.
  • "focusTime": Es un evento de tiempo dedicado.
  • "fromGmail": Un evento de Gmail. No se puede crear este tipo de evento.
  • "outOfOffice": Un evento fuera de la oficina.
  • "workingLocation": Es un evento de ubicación de trabajo.
admite escritura
extendedProperties.private object Propiedades que son privadas para la copia del evento que aparece en este calendario. admite escritura
extendedProperties.shared object Propiedades que se comparten entre copias del evento en los calendarios de otros asistentes. admite escritura
focusTimeProperties nested object Datos del evento de tiempo dedicado Se usa si eventType es focusTime. admite escritura
gadget.display string Es el modo de visualización del gadget. Obsoleta. Los valores posibles son los siguientes:
  • "icon": El gadget se muestra junto al título del evento en la vista de 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. Obsoleta. admite escritura
gadget.preferences object Preferencias. admite escritura
gadget.title string Título del gadget. Obsoleta. admite escritura
gadget.type string Es el tipo de gadget. Obsoleta. admite escritura
gadget.width integer Es el ancho del gadget en píxeles. El ancho debe ser un número entero mayor que 0. Opcional. Obsoleta. admite escritura
guestsCanInviteOthers boolean Indica si los asistentes que no sean 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 sean el organizador pueden modificar el evento. Opcional. El valor predeterminado es False. admite escritura
guestsCanSeeOtherGuests boolean Indica si los asistentes que no sean el organizador pueden ver quiénes son los asistentes del evento. Opcional. El valor predeterminado es True. admite escritura
id string Es el identificador opaco del evento. Al crear nuevos eventos únicos o recurrentes, puedes especificar sus IDs. Los IDs proporcionados deben seguir estas reglas:
  • Los caracteres permitidos en el ID son los que se usan en la codificación base32hex, es decir, letras minúsculas de la "a" a la "v" y los dígitos del 0 al 9; consulta la sección 3.1.2 de RFC2938.
  • la longitud del ID debe tener entre 5 y 1,024 caracteres
  • el ID debe ser único por calendario
Debido a la naturaleza distribuida a nivel global del sistema, no podemos garantizar que se detecten colisiones de ID en el momento de la creación del evento. Para minimizar el riesgo de colisiones, recomendamos usar un algoritmo de UUID establecido, como el que se describe en RFC4122.

Si no especificas un ID, el servidor lo generará automáticamente.

Ten en cuenta que icalUID y id no son idénticos y que 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.

admite escritura
location string Es la ubicación geográfica del evento como texto de formato libre. Opcional. admite escritura
originalStartTime.date date Es la fecha, en formato "aaaa-mm-dd", si se trata de un evento de todo el día. admite escritura
originalStartTime.dateTime datetime La hora, como un valor de fecha y hora combinado (con el formato de RFC3339) Se requiere una compensación de zona horaria, a menos que se especifique una zona horaria de forma explícita en timeZone. admite escritura
originalStartTime.timeZone string Es la zona horaria en la que se especifica la hora. (con el formato de un 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 la que se expande la recurrencia. Para eventos individuales, este campo es opcional y indica una zona horaria personalizada para el inicio o la finalización del evento. admite escritura
outOfOfficeProperties nested object Datos del evento 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 usa los recordatorios predeterminados, se enumeran los recordatorios específicos del evento o, si no se establecen, se indica que no hay recordatorios establecidos para este 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 los siguientes:
  • "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 cuando se agrega un recordatorio.

admite escritura
reminders.overrides[].minutes integer Es la cantidad de minutos antes del inicio del evento en los que se debe activar el recordatorio. Los valores válidos están entre 0 y 40320 (4 semanas en minutos).

Obligatorio cuando se agrega un recordatorio.

admite escritura
reminders.useDefault boolean Indica si los recordatorios predeterminados del calendario se aplican al evento. admite escritura
sequence integer Es el número de secuencia según iCalendar. admite escritura
source.title string Es el 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 Es la URL de la fuente que apunta a un recurso. El esquema de URL debe ser HTTP o HTTPS. admite escritura
start.date date Es la fecha, en formato "aaaa-mm-dd", si se trata de un evento de todo el día. admite escritura
start.dateTime datetime La hora, como un valor de fecha y hora combinado (con el formato de RFC3339) Se requiere un desplazamiento de zona horaria, a menos que se especifique explícitamente una zona horaria en timeZone. admite escritura
start.timeZone string Es la zona horaria en la que se especifica la hora. (con el formato de un 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 la que se expande la recurrencia. Para eventos individuales, este campo es opcional y indica una zona horaria personalizada para el inicio o la finalización del evento. admite escritura
status string Estado del evento. Opcional. Los valores posibles son los siguientes:
  • "confirmed": El evento está confirmado. Este es el estado predeterminado.
  • "tentative": El evento se confirmó de forma provisional.
  • "cancelled": El evento se cancela (se borra). El método list muestra eventos cancelados solo en la sincronización incremental (cuando se especifican 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 el ciclo de vida del evento recurrente superior.

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

    2. Todos los demás eventos cancelados representan eventos borrados. Los clientes deben quitar sus copias sincronizadas de forma local. Estos eventos cancelados desaparecerán con el tiempo, por lo que no debes suponer que estará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 (no borrar). Del mismo modo, los eventos a los que se invitó al usuario y que este quitó de forma manual siguen proporcionando detalles. Sin embargo, las solicitudes de sincronización incremental con showDeleted establecido como falso no mostrarán estos detalles.

    Si se cambia el organizador de un evento (por ejemplo, mediante la operación mover) y el organizador original no está en la lista de asistentes, se 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 el tiempo en el calendario. Opcional. Los valores posibles son:
  • "opaque": Es el valor predeterminado. El evento bloquea el tiempo en el calendario. Esto equivale a configurar Show me as en Busy en la IU del Calendario.
  • "transparent": El evento no bloquea un horario en el calendario. Esto equivale a configurar Show me as en Available en la IU del Calendario.
admite escritura
visibility string Visibilidad del evento. Opcional. Los valores posibles son los siguientes:
  • "default": Usa la visibilidad predeterminada para los eventos del calendario. Este es el valor predeterminado.
  • "public": El evento es público y todos los lectores del calendario pueden ver sus detalles.
  • "private": El evento es privado y solo los asistentes pueden ver sus detalles.
  • "confidential": El evento es privado. Este valor se proporciona por motivos de compatibilidad.
admite escritura
workingLocationProperties nested object Datos de eventos de ubicación de trabajo admite escritura
workingLocationProperties.customLocation object Si está presente, especifica que el usuario está trabajando desde una ubicación personalizada. admite escritura
workingLocationProperties.customLocation.label string Es una etiqueta adicional opcional para obtener información adicional. admite escritura
workingLocationProperties.homeOffice any value Si está presente, especifica que el usuario trabaja desde casa. admite escritura
workingLocationProperties.officeLocation object Si está presente, especifica que el usuario está trabajando desde una oficina. admite escritura
workingLocationProperties.officeLocation.buildingId string Es un identificador de edificio opcional. Debe hacer referencia a un ID de edificio en la base de datos de recursos de la organización. admite escritura
workingLocationProperties.officeLocation.deskId string Es un identificador de escritorio opcional. admite escritura
workingLocationProperties.officeLocation.floorId string Un identificador de piso opcional. admite escritura
workingLocationProperties.officeLocation.floorSectionId string Un identificador opcional de la sección del piso. admite escritura
workingLocationProperties.officeLocation.label string El nombre de la oficina que se muestra en los clientes web y móviles del Calendario. Te recomendamos que hagas referencia a un nombre de edificio en la base de datos de recursos de la organización. admite escritura
workingLocationProperties.type string Es el tipo de ubicación de trabajo. Los valores posibles son los siguientes:
  • "homeOffice": El usuario está trabajando en su casa.
  • "officeLocation": El usuario está trabajando desde una oficina.
  • "customLocation": El usuario está trabajando desde una ubicación personalizada.
Los detalles se especifican en un subcampo del nombre especificado, pero es posible que falte este campo si está vacío. Se ignorará cualquier otro campo.

Es obligatorio cuando se agregan propiedades de ubicación de trabajo.

admite escritura

Respuesta

Si se ejecuta 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.

// Refer to the Java quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/java
// Change the scope to CalendarScopes.CALENDAR and delete any stored
// credentials.

Event event = new Event()
    .setSummary("Google I/O 2015")
    .setLocation("800 Howard St., San Francisco, CA 94103")
    .setDescription("A chance to hear more about Google's developer products.");

DateTime startDateTime = new DateTime("2015-05-28T09:00:00-07:00");
EventDateTime start = new EventDateTime()
    .setDateTime(startDateTime)
    .setTimeZone("America/Los_Angeles");
event.setStart(start);

DateTime endDateTime = new DateTime("2015-05-28T17:00:00-07:00");
EventDateTime end = new EventDateTime()
    .setDateTime(endDateTime)
    .setTimeZone("America/Los_Angeles");
event.setEnd(end);

String[] recurrence = new String[] {"RRULE:FREQ=DAILY;COUNT=2"};
event.setRecurrence(Arrays.asList(recurrence));

EventAttendee[] attendees = new EventAttendee[] {
    new EventAttendee().setEmail("[email protected]"),
    new EventAttendee().setEmail("[email protected]"),
};
event.setAttendees(Arrays.asList(attendees));

EventReminder[] reminderOverrides = new EventReminder[] {
    new EventReminder().setMethod("email").setMinutes(24 * 60),
    new EventReminder().setMethod("popup").setMinutes(10),
};
Event.Reminders reminders = new Event.Reminders()
    .setUseDefault(false)
    .setOverrides(Arrays.asList(reminderOverrides));
event.setReminders(reminders);

String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());

Python

Usa la biblioteca cliente de Python.

# Refer to the Python quickstart on how to setup the environment:
# https://developers.google.com/calendar/quickstart/python
# Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
# stored credentials.

event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': '[email protected]'},
    {'email': '[email protected]'},
  ],
  'reminders': {
    'useDefault': False,
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10},
    ],
  },
}

event = service.events().insert(calendarId='primary', body=event).execute()
print 'Event created: %s' % (event.get('htmlLink'))

PHP

Usa la biblioteca cliente de PHP.

// Refer to the PHP quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/php
// Change the scope to Google_Service_Calendar::CALENDAR and delete any stored
// credentials.

$event = new Google_Service_Calendar_Event(array(
  'summary' => 'Google I/O 2015',
  'location' => '800 Howard St., San Francisco, CA 94103',
  'description' => 'A chance to hear more about Google\'s developer products.',
  'start' => array(
    'dateTime' => '2015-05-28T09:00:00-07:00',
    'timeZone' => 'America/Los_Angeles',
  ),
  'end' => array(
    'dateTime' => '2015-05-28T17:00:00-07:00',
    'timeZone' => 'America/Los_Angeles',
  ),
  'recurrence' => array(
    'RRULE:FREQ=DAILY;COUNT=2'
  ),
  'attendees' => array(
    array('email' => '[email protected]'),
    array('email' => '[email protected]'),
  ),
  'reminders' => array(
    'useDefault' => FALSE,
    'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60),
      array('method' => 'popup', 'minutes' => 10),
    ),
  ),
));

$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);

Ruby

Utiliza la biblioteca cliente de Ruby.

event = Google::Apis::CalendarV3::Event.new(
  summary: 'Google I/O 2015',
  location: '800 Howard St., San Francisco, CA 94103',
  description: 'A chance to hear more about Google\'s developer products.',
  start: Google::Apis::CalendarV3::EventDateTime.new(
    date_time: '2015-05-28T09:00:00-07:00',
    time_zone: 'America/Los_Angeles'
  ),
  end: Google::Apis::CalendarV3::EventDateTime.new(
    date_time: '2015-05-28T17:00:00-07:00',
    time_zone: 'America/Los_Angeles'
  ),
  recurrence: [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  attendees: [
    Google::Apis::CalendarV3::EventAttendee.new(
      email: '[email protected]'
    ),
    Google::Apis::CalendarV3::EventAttendee.new(
      email: '[email protected]'
    )
  ],
  reminders: Google::Apis::CalendarV3::Event::Reminders.new(
    use_default: false,
    overrides: [
      Google::Apis::CalendarV3::EventReminder.new(
        reminder_method: 'email',
        minutes: 24 * 60
      ),
      Google::Apis::CalendarV3::EventReminder.new(
        reminder_method: 'popup',
        minutes: 10
      )
    ]
  )
)

result = client.insert_event('primary', event)
puts "Event created: #{result.html_link}"

.NET

Usa la biblioteca cliente de.NET.

// Refer to the .NET quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/dotnet
// Change the scope to CalendarService.Scope.Calendar and delete any stored
// credentials.

Event newEvent = new Event()
{
    Summary = "Google I/O 2015",
    Location = "800 Howard St., San Francisco, CA 94103",
    Description = "A chance to hear more about Google's developer products.",
    Start = new EventDateTime()
    {
        DateTime = DateTime.Parse("2015-05-28T09:00:00-07:00"),
        TimeZone = "America/Los_Angeles",
    },
    End = new EventDateTime()
    {
        DateTime = DateTime.Parse("2015-05-28T17:00:00-07:00"),
        TimeZone = "America/Los_Angeles",
    },
    Recurrence = new String[] { "RRULE:FREQ=DAILY;COUNT=2" },
    Attendees = new EventAttendee[] {
        new EventAttendee() { Email = "[email protected]" },
        new EventAttendee() { Email = "[email protected]" },
    },
    Reminders = new Event.RemindersData()
    {
        UseDefault = false,
        Overrides = new EventReminder[] {
            new EventReminder() { Method = "email", Minutes = 24 * 60 },
            new EventReminder() { Method = "sms", Minutes = 10 },
        }
    }
};

String calendarId = "primary";
EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
Event createdEvent = request.Execute();
Console.WriteLine("Event created: {0}", createdEvent.HtmlLink);

Go

Usa la biblioteca cliente de Go.

// Refer to the Go quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/go
// Change the scope to calendar.CalendarScope and delete any stored credentials.

event := &calendar.Event{
  Summary: "Google I/O 2015",
  Location: "800 Howard St., San Francisco, CA 94103",
  Description: "A chance to hear more about Google's developer products.",
  Start: &calendar.EventDateTime{
    DateTime: "2015-05-28T09:00:00-07:00",
    TimeZone: "America/Los_Angeles",
  },
  End: &calendar.EventDateTime{
    DateTime: "2015-05-28T17:00:00-07:00",
    TimeZone: "America/Los_Angeles",
  },
  Recurrence: []string{"RRULE:FREQ=DAILY;COUNT=2"},
  Attendees: []*calendar.EventAttendee{
    &calendar.EventAttendee{Email:"[email protected]"},
    &calendar.EventAttendee{Email:"[email protected]"},
  },
}

calendarId := "primary"
event, err = srv.Events.Insert(calendarId, event).Do()
if err != nil {
  log.Fatalf("Unable to create event. %v\n", err)
}
fmt.Printf("Event created: %s\n", event.HtmlLink)

JavaScript

Utiliza la biblioteca cliente de JavaScript.

// Refer to the JavaScript quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/js
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.

var event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles'
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles'
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': '[email protected]'},
    {'email': '[email protected]'}
  ],
  'reminders': {
    'useDefault': false,
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10}
    ]
  }
};

var request = gapi.client.calendar.events.insert({
  'calendarId': 'primary',
  'resource': event
});

request.execute(function(event) {
  appendPre('Event created: ' + event.htmlLink);
});

Node.js

Usa la biblioteca cliente de Node.js.

// Refer to the Node.js quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/node
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.

var event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': '[email protected]'},
    {'email': '[email protected]'},
  ],
  'reminders': {
    'useDefault': false,
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10},
    ],
  },
};

calendar.events.insert({
  auth: auth,
  calendarId: 'primary',
  resource: event,
}, function(err, event) {
  if (err) {
    console.log('There was an error contacting the Calendar service: ' + err);
    return;
  }
  console.log('Event created: %s', event.htmlLink);
});

Pruébalo

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