Events: import

Importe un événement. Cette opération permet d'ajouter une copie privée d'un événement existant à un agenda. Seuls les événements dont l'attribut eventType est défini sur default peuvent être importés.

Comportement obsolète:si un événement autre que default est importé, son type sera remplacé par default, et toutes ses propriétés spécifiques au type d'événement seront supprimées.

Essayez dès maintenant ou consultez un exemple.

Requête

Requête HTTP

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

Paramètres

Nom du paramètre Valeur Description
Paramètres de chemin d'accès
calendarId string Identifiant de l'agenda. Pour récupérer les ID d'agenda, appelez la méthode calendarList.list. Si vous souhaitez accéder à l'agenda principal de l'utilisateur actuellement connecté, utilisez le bouton "primary" mot clé.
Paramètres de requête facultatifs
conferenceDataVersion integer Numéro de version des données de conférence compatible avec le client API. La version 0 suppose qu'aucune donnée de conférence n'est prise en charge et ignore les données de conférence dans le corps de l'événement. La version 1 permet de copier des données ConferenceData et de créer des conférences à l'aide du champ createRequest de conférenceData. La valeur par défaut est 0. Les valeurs autorisées vont de 0 à 1, inclus.
supportsAttachments boolean Indique si l'opération du client API est compatible avec les pièces jointes d'événements. Facultatif. La valeur par défaut est "False" (faux).

Autorisation

Une autorisation est requise pour cette demande. Celle-ci doit inclure au moins l'un des champs d'application suivants:

Champ d'application
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events

Pour en savoir plus, consultez la page Authentification et autorisation.

Corps de la requête

Dans le corps de la requête, indiquez une ressource "Events" (Événements) avec les propriétés suivantes:

Nom de propriété Valeur Description Remarques
Propriétés obligatoires
end nested object Heure de fin (exclue) de l'événement. Pour un événement périodique, il s'agit de l'heure de fin de la première occurrence.
iCalUID string Identifiant unique d'événement, tel que défini dans le document RFC5545. Il permet d'identifier de manière unique les événements dans les systèmes d'agenda et doit être fourni lors de l'importation d'événements via la méthode import.

Notez que iCalUID et id ne sont pas identiques. Vous ne devez fournir qu'un seul d'entre eux au moment de la création de l'événement. L'une des différences de sémantique est que, dans les événements périodiques, toutes les occurrences d'un événement ont des id différents, alors qu'elles partagent toutes les mêmes iCalUID. Pour récupérer un événement à l'aide de son iCalUID, appelez la méthode events.list à l'aide du paramètre iCalUID. Pour récupérer un événement à l'aide de son id, appelez la méthode events.get.

start nested object Heure de début (incluse) de l'événement. Pour un événement périodique, il s'agit de l'heure de début de la première occurrence.
Propriétés facultatives
anyoneCanAddSelf boolean Indique si les utilisateurs peuvent s'inviter à l'événement (obsolète). Facultatif. La valeur par défaut est "False" (faux). accessible en écriture
attachments[].fileUrl string l'URL de la pièce jointe.

Pour ajouter des pièces jointes Google Drive, utilisez le même format que dans la propriété alternateLink de la ressource Files dans l'API Drive.

Obligatoire lors de l'ajout d'une pièce jointe.

accessible en écriture
attendees[] list Participants à l'événement Pour en savoir plus sur la planification d'événements avec d'autres utilisateurs d'Agenda, consultez le guide Événements avec des participants. Les comptes de service doivent utiliser la délégation d'autorité au niveau du domaine pour remplir la liste des participants. accessible en écriture
attendees[].additionalGuests integer Nombre d'invités supplémentaires. Facultatif. La valeur par défaut est 0. accessible en écriture
attendees[].comment string Commentaire de réponse du participant. Facultatif. accessible en écriture
attendees[].displayName string Nom du participant, si disponible. Facultatif. accessible en écriture
attendees[].email string Adresse e-mail du participant, si disponible. Ce champ doit être présent lors de l'ajout d'un participant. Il doit s'agir d'une adresse e-mail valide conformément à la norme RFC5322.

Obligatoire lors de l'ajout d'un participant.

accessible en écriture
attendees[].optional boolean Indique s'il s'agit d'un participant facultatif. Facultatif. La valeur par défaut est "False" (faux). accessible en écriture
attendees[].resource boolean Indique si le participant est une ressource. Ne peut être défini que lorsque le participant est ajouté à l'événement pour la première fois. Les modifications ultérieures sont ignorées. Facultatif. La valeur par défaut est "False" (faux). accessible en écriture
attendees[].responseStatus string État de la réponse du participant. Les valeurs possibles sont:
  • "needsAction" - Le participant n'a pas répondu à l'invitation (recommandé pour les nouveaux événements).
  • "declined" - Le participant a refusé l'invitation.
  • "tentative" - Le participant a accepté provisoirement l'invitation.
  • "accepted" - Le participant a accepté l'invitation.
accessible en écriture
attendeesOmitted boolean Indique si des participants ont été omis dans la représentation de l'événement. Une restriction spécifiée par le paramètre de requête maxAttendee peut s'expliquer par la récupération d'un événement. Lorsque vous modifiez un événement, cette option ne peut être utilisée que pour mettre à jour la réponse du participant. Facultatif. La valeur par défaut est "False" (faux). accessible en écriture
colorId string Couleur de l'événement. Cet ID fait référence à une entrée de la section event de la définition des couleurs (voir le point de terminaison des couleurs). Facultatif. accessible en écriture
conferenceData nested object Informations liées à la conférence, telles que les détails d'une conférence Google Meet. Pour créer des informations sur une conférence, utilisez le champ createRequest. Pour conserver vos modifications, n'oubliez pas de définir le paramètre de requête conferenceDataVersion sur 1 pour toutes les demandes de modification d'événement. accessible en écriture
description string Description de l'événement. Peut contenir du code HTML. Facultatif. accessible en écriture
end.date date Date au format "aaaa-mm-jj", s'il s'agit d'un événement d'une journée entière. accessible en écriture
end.dateTime datetime Heure, sous forme de valeur combinée date/heure (formatée conformément à la norme RFC3339). Un décalage de fuseau horaire est requis, sauf si un fuseau horaire est explicitement spécifié dans timeZone. accessible en écriture
end.timeZone string Fuseau horaire dans lequel l'heure est spécifiée. (présenté sous la forme d'un nom de base de données des fuseaux horaires de l'IANA, par exemple "Europe/Zurich".) Pour les événements périodiques, ce champ est obligatoire. Il spécifie le fuseau horaire dans lequel la récurrence est étendue. Pour les événements individuels, ce champ est facultatif et indique un fuseau horaire personnalisé pour le début et la fin de l'événement. accessible en écriture
extendedProperties.private object Propriétés réservées à la copie de l'événement qui apparaît dans cet agenda. accessible en écriture
extendedProperties.shared object Propriétés partagées entre les copies de l'événement sur celles des autres participants agendas. accessible en écriture
focusTimeProperties nested object Données d'événement "Moment de concentration". Utilisé si eventType est défini sur focusTime. accessible en écriture
gadget.display string Mode d'affichage du gadget. Obsolète. Les valeurs possibles sont:
  • "icon" - Le gadget s'affiche à côté du titre de l'événement dans la vue de l'agenda.
  • "chip" - Le gadget s'affiche lorsque l'utilisateur clique sur l'événement.
accessible en écriture
gadget.height integer Hauteur du gadget en pixels. La hauteur doit être un nombre entier supérieur à zéro. Facultatif. Obsolète. accessible en écriture
gadget.preferences object Préférences. accessible en écriture
gadget.title string Titre du gadget. Obsolète. accessible en écriture
gadget.type string Type de gadget. Obsolète. accessible en écriture
gadget.width integer Largeur du gadget en pixels. La largeur doit être un nombre entier supérieur à zéro. Facultatif. Obsolète. accessible en écriture
guestsCanInviteOthers boolean Indique si des participants autres que l'organisateur peuvent inviter d'autres personnes à l'événement. Facultatif. La valeur par défaut est "True". accessible en écriture
guestsCanModify boolean Indique si des participants autres que l'organisateur peuvent modifier l'événement. Facultatif. La valeur par défaut est "False" (faux). accessible en écriture
guestsCanSeeOtherGuests boolean Indique si les participants autres que l'organisateur peuvent voir qui sont les participants à l'événement. Facultatif. La valeur par défaut est "True". accessible en écriture
location string Emplacement géographique de l'événement (texte au format libre) Facultatif. accessible en écriture
organizer object Organisateur de l'événement. Si l'organisateur est également un participant, cela est indiqué par une entrée distincte dans attendees avec le champ organizer défini sur "True". Pour changer d'organisateur, utilisez l'opération move. Lecture seule, sauf lors de l'importation d'un événement. accessible en écriture
organizer.displayName string Nom de l'organisateur, si disponible. accessible en écriture
organizer.email string Adresse e-mail de l'organisateur, si disponible. Il doit s'agir d'une adresse e-mail valide conformément à la norme RFC5322. accessible en écriture
originalStartTime.date date Date au format "aaaa-mm-jj", s'il s'agit d'un événement d'une journée entière. accessible en écriture
originalStartTime.dateTime datetime Heure, sous forme de valeur combinée date/heure (formatée conformément à la norme RFC3339). Un décalage de fuseau horaire est requis, sauf si un fuseau horaire est explicitement spécifié dans timeZone. accessible en écriture
originalStartTime.timeZone string Fuseau horaire dans lequel l'heure est spécifiée. (présenté sous la forme d'un nom de base de données des fuseaux horaires de l'IANA, par exemple "Europe/Zurich".) Pour les événements périodiques, ce champ est obligatoire. Il spécifie le fuseau horaire dans lequel la récurrence est étendue. Pour les événements individuels, ce champ est facultatif et indique un fuseau horaire personnalisé pour le début et la fin de l'événement. accessible en écriture
outOfOfficeProperties nested object Données d'absence du bureau. Utilisé si eventType est défini sur outOfOffice. accessible en écriture
recurrence[] list Liste des lignes RRULE, EXRULE, RDATE et EXDATE pour un événement périodique, comme spécifié dans le RFC5545. Notez que les lignes DTSTART et DTEND ne sont pas autorisées dans ce champ. Les heures de début et de fin de l'événement sont spécifiées dans les champs start et end. Ce champ est omis pour les événements ponctuels ou périodiques. accessible en écriture
reminders.overrides[] list Si l'événement n'utilise pas les rappels par défaut, les rappels spécifiques à l'événement s'affichent. Si aucun rappel n'est défini, cela indique qu'aucun rappel n'est défini pour cet événement. Vous ne pouvez pas définir plus de cinq rappels. accessible en écriture
reminders.overrides[].method string Méthode utilisée pour ce rappel. Les valeurs possibles sont:
  • "email" - Les rappels sont envoyés par e-mail.
  • "popup" - Les rappels sont envoyés via un pop-up d'interface utilisateur.

Obligatoire lors de l'ajout d'un rappel.

accessible en écriture
reminders.overrides[].minutes integer Nombre de minutes avant le début de l'événement pendant lesquelles le rappel doit se déclencher. Les valeurs valides sont comprises entre 0 et 40 320 (4 semaines en minutes).

Obligatoire lors de l'ajout d'un rappel.

accessible en écriture
reminders.useDefault boolean Indique si les rappels par défaut de l'agenda s'appliquent à l'événement. accessible en écriture
sequence integer Numéro de séquence conformément à iCalendar. accessible en écriture
source.title string Titre de la source par exemple le titre d'une page Web ou l'objet d'un e-mail. accessible en écriture
source.url string URL de la source pointant vers une ressource. Le schéma d'URL doit être HTTP ou HTTPS. accessible en écriture
start.date date Date au format "aaaa-mm-jj", s'il s'agit d'un événement d'une journée entière. accessible en écriture
start.dateTime datetime Heure, sous forme de valeur combinée date/heure (formatée conformément à la norme RFC3339). Un décalage de fuseau horaire est requis, sauf si un fuseau horaire est explicitement spécifié dans timeZone. accessible en écriture
start.timeZone string Fuseau horaire dans lequel l'heure est spécifiée. (présenté sous la forme d'un nom de base de données des fuseaux horaires de l'IANA, par exemple "Europe/Zurich".) Pour les événements périodiques, ce champ est obligatoire. Il spécifie le fuseau horaire dans lequel la récurrence est étendue. Pour les événements individuels, ce champ est facultatif et indique un fuseau horaire personnalisé pour le début et la fin de l'événement. accessible en écriture
status string État de l'événement. Facultatif. Les valeurs possibles sont:
  • "confirmed" - L'événement est confirmé. Il s'agit de l'état par défaut.
  • "tentative" - L'événement est provisoirement confirmé.
  • "cancelled" - L'événement est annulé (supprimé). La méthode list ne renvoie les événements annulés que lors de la synchronisation incrémentielle (lorsque les champs syncToken ou updatedMin sont spécifiés) ou si l'option showDeleted est définie sur true. La méthode get les renvoie toujours.

    Un état "Annulé" peut représenter deux états différents selon le type d'événement:

    1. Les exceptions annulées d'un événement récurrent non annulé indiquent que cette instance ne doit plus être présentée à l'utilisateur. Les clients doivent conserver ces événements pendant toute la durée de vie de l'événement récurrent parent.

      Les exceptions annulées ne garantissent que les valeurs des champs id, recurringEventId et originalStartTime renseignés. Les autres champs peuvent être vides.

    2. Tous les autres événements annulés représentent des événements supprimés. Les clients doivent supprimer leurs copies synchronisées localement. Ces événements annulés finiront par disparaître. Par conséquent, ne comptez pas sur leur disponibilité indéfiniment.

      Seul le champ id sera renseigné pour les événements supprimés.

    Dans l'agenda de l'organisateur, les détails des événements annulés (récapitulatif, lieu, etc.) restent visibles afin qu'ils puissent être restaurés ou supprimés. De même, les événements auxquels l'utilisateur a été invité et qu'il a supprimé manuellement continuent de fournir des informations. Toutefois, les requêtes de synchronisation incrémentielles avec showDeleted défini sur "false" ne renvoient pas ces informations.

    Si un événement change d'organisateur (par exemple, via l'opération move) et que l'organisateur d'origine ne figure pas dans la liste des participants, il laissera un événement annulé où seul le champ id sera renseigné.

accessible en écriture
summary string Titre de l'événement. accessible en écriture
transparency string Indique si l'événement bloque du temps dans l'agenda. Facultatif. Les valeurs possibles sont:
  • "opaque" : valeur par défaut. En revanche, l'événement bloque du temps dans l'agenda. Cela équivaut à définir l'option Ma disponibilité en tant que sur Occupé dans l'interface utilisateur d'Agenda.
  • "transparent" - L'événement ne bloque pas de temps dans l'agenda. Cela revient à définir l'option Ma disponibilité en tant que sur Disponible dans l'interface utilisateur d'Agenda.
accessible en écriture
visibility string Visibilité de l'événement. Facultatif. Les valeurs possibles sont:
  • "default" - Utilise la visibilité par défaut des événements de l'agenda. Il s'agit de la valeur par défaut.
  • "public" - L'événement est public, et tous les lecteurs de l'agenda ont accès à ses détails.
  • "private" - L'événement est privé, et seuls les participants peuvent en consulter les détails.
  • "confidential" - L'événement est privé. Cette valeur est fournie pour des raisons de compatibilité.
accessible en écriture

Réponse

Lorsque cette méthode fonctionne, elle renvoie une ressource "Events" dans le corps de réponse.

Exemples

Remarque : Les langages de programmation compatibles ne figurent pas tous dans les exemples de code présentés pour cette méthode (consultez la page Bibliothèques clientes pour obtenir la liste des langages compatibles).

Java

Elle utilise la bibliothèque cliente 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

Elle utilise la bibliothèque cliente 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

Elle utilise la bibliothèque cliente 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

Elle utilise la bibliothèque 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

Essayer

Utilisez l'explorateur d'API ci-dessous pour appeler cette méthode sur des données en direct, puis observez la réponse.