Events: import

Importa un evento. Questa operazione viene utilizzata per aggiungere una copia privata di un evento esistente a un calendario. È possibile importare solo gli eventi con eventType pari a default.

Comportamento deprecato: se viene importato un evento non default, il suo tipo verrà modificato in default e tutte le eventuali proprietà specifiche del tipo di evento verranno eliminate.

Prova subito o guarda un esempio.

Richiesta

Richiesta HTTP

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

Parametri

Nome del parametro Valore Descrizione
Parametri percorso
calendarId string Identificatore di calendario. Per recuperare gli ID calendario, chiama il metodo calendarList.list. Se vuoi accedere al calendario principale dell'utente che ha eseguito l'accesso, usa "primary" parola chiave.
Parametri di query facoltativi
conferenceDataVersion integer Numero di versione dei dati della conferenza supportati dal client API. La versione 0 presuppone che i dati relativi alle conferenze non siano supportati e ignora i dati relativi alle conferenze nel corpo dell'evento. La versione 1 consente il supporto per la copia di ConferenceData e per la creazione di nuove conferenze utilizzando il campo createRequest di ConferenceData. Il valore predefinito è 0. I valori accettati sono compresi tra 0 e 1 (inclusi).
supportsAttachments boolean Indica se il client API che esegue l'operazione supporta i collegamenti di eventi. (Facoltativo) Il valore predefinito è False.

Autorizzazione

Questa richiesta richiede l'autorizzazione con almeno uno dei seguenti ambiti:

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

Per ulteriori informazioni, consulta la pagina Autenticazione e autorizzazione.

Corpo della richiesta

Nel corpo della richiesta, fornisci una risorsa Eventi con le seguenti proprietà:

Nome proprietà Valore Descrizione Note
Proprietà obbligatorie
end nested object L'ora di fine (esclusiva) dell'evento. Per un evento ricorrente, questa è l'ora di fine della prima istanza.
iCalUID string Identificatore univoco dell'evento come definito in RFC5545. Viene utilizzato per identificare in modo univoco gli eventi nei vari sistemi di calendario e deve essere fornito quando si importano gli eventi tramite il metodo import.

Tieni presente che iCalUID e id non sono identici e solo uno deve essere fornito al momento della creazione dell'evento. Una differenza nella loro semantica è che negli eventi ricorrenti, tutte le occorrenze di un evento hanno id diversi mentre condividono gli stessi iCalUID. Per recuperare un evento utilizzando il relativo iCalUID, chiama il metodo events.list utilizzando il parametro iCalUID. Per recuperare un evento utilizzando il relativo id, chiama il metodo events.get.

start nested object L'ora (inclusa) di inizio dell'evento. Per un evento ricorrente, questa è l'ora di inizio della prima istanza.
Proprietà facoltative
anyoneCanAddSelf boolean Indica se chiunque può invitarsi all'evento (deprecato). (Facoltativo) Il valore predefinito è False. accessibile in scrittura
attachments[].fileUrl string Link URL all'allegato.

Per aggiungere allegati di file di Google Drive, utilizza lo stesso formato della proprietà alternateLink della risorsa Files nell'API Drive.

Obbligatorio quando si aggiunge un allegato.

accessibile in scrittura
attendees[] list I partecipanti all'evento. Per ulteriori informazioni sulla programmazione di eventi con altri utenti del calendario, consulta la guida Eventi con partecipanti. Gli account di servizio devono utilizzare la delega dell'autorità a livello di dominio per completare l'elenco dei partecipanti. accessibile in scrittura
attendees[].additionalGuests integer Numero di ospiti aggiuntivi. (Facoltativo) Il valore predefinito è 0. accessibile in scrittura
attendees[].comment string Commento della risposta del partecipante. (Facoltativo) accessibile in scrittura
attendees[].displayName string Il nome del partecipante, se disponibile. (Facoltativo) accessibile in scrittura
attendees[].email string L'indirizzo email del partecipante, se disponibile. Questo campo deve essere presente quando aggiungi un partecipante. Deve essere un indirizzo email valido conforme a RFC5322.

Obbligatorio quando si aggiunge un partecipante.

accessibile in scrittura
attendees[].optional boolean Se si tratta di un partecipante facoltativo. (Facoltativo) Il valore predefinito è False. accessibile in scrittura
attendees[].resource boolean Se il partecipante è una risorsa. Può essere impostato solo quando il partecipante viene aggiunto all'evento per la prima volta. Le modifiche successive vengono ignorate. (Facoltativo) Il valore predefinito è False. accessibile in scrittura
attendees[].responseStatus string Lo stato della risposta del partecipante. I valori possibili sono:
  • "needsAction" - Il partecipante non ha risposto all'invito (consigliato per i nuovi eventi).
  • "declined" - Il partecipante ha rifiutato l'invito.
  • "tentative" - Il partecipante ha accettato provvisoriamente l'invito.
  • "accepted" - Il partecipante ha accettato l'invito.
accessibile in scrittura
attendeesOmitted boolean L'eventualità che i partecipanti siano stati omessi dalla rappresentazione dell'evento. Durante il recupero di un evento, ciò potrebbe essere dovuto a una limitazione specificata dal parametro di query maxAttendee. Quando aggiorni un evento, questa opzione può essere utilizzata solo per aggiornare la risposta del partecipante. (Facoltativo) Il valore predefinito è False. accessibile in scrittura
colorId string Il colore dell'evento. Si tratta di un ID che fa riferimento a una voce nella sezione event della definizione dei colori (vedi l' endpoint dei colori). (Facoltativo) accessibile in scrittura
conferenceData nested object Le informazioni relative alla conferenza, ad esempio i dettagli di una conferenza di Google Meet. Per creare nuovi dettagli della conferenza, utilizza il campo createRequest. Per mantenere le modifiche, ricordati di impostare il parametro di richiesta conferenceDataVersion su 1 per tutte le richieste di modifica degli eventi. accessibile in scrittura
description string Descrizione dell'evento. Può contenere codice HTML. (Facoltativo) accessibile in scrittura
end.date date La data nel formato "aaaa-mm-gg", se si tratta di un evento che dura tutto il giorno. accessibile in scrittura
end.dateTime datetime L'ora, come valore combinato di data e ora (formattato in base a RFC3339). La differenza del fuso orario è obbligatoria, a meno che non venga specificato esplicitamente in timeZone un fuso orario. accessibile in scrittura
end.timeZone string Il fuso orario in cui è specificata l'ora. (Formattato come nome di un database di fusi orari IANA, ad esempio "Europa/Zurigo"). Per gli eventi ricorrenti questo campo è obbligatorio e specifica il fuso orario in cui viene espansa la ricorrenza. Per i singoli eventi, questo campo è facoltativo e indica un fuso orario personalizzato per l'inizio e la fine dell'evento. accessibile in scrittura
extendedProperties.private object Proprietà private per la copia dell'evento visualizzato in questo calendario. accessibile in scrittura
extendedProperties.shared object Proprietà condivise tra le copie dell'evento negli altri partecipanti calendari. accessibile in scrittura
focusTimeProperties nested object Dati sull'evento Momento di concentrazione. Utilizzato se eventType è focusTime. accessibile in scrittura
gadget.display string La modalità di visualizzazione del gadget. Deprecato. I valori possibili sono:
  • "icon" - Il gadget viene visualizzato accanto al titolo dell'evento nella visualizzazione del calendario.
  • "chip" - Il gadget viene visualizzato quando l'utente fa clic sull'evento.
accessibile in scrittura
gadget.height integer L'altezza del gadget in pixel. L'altezza deve essere un numero intero maggiore di 0. (Facoltativo) Deprecato. accessibile in scrittura
gadget.preferences object Preferenze. accessibile in scrittura
gadget.title string Il titolo del gadget. Deprecato. accessibile in scrittura
gadget.type string Il tipo di gadget. Deprecato. accessibile in scrittura
gadget.width integer La larghezza del gadget in pixel. La larghezza deve essere un numero intero maggiore di 0. (Facoltativo) Deprecato. accessibile in scrittura
guestsCanInviteOthers boolean Se partecipanti diversi dall'organizzatore possono invitare altre persone all'evento. (Facoltativo) Il valore predefinito è True. accessibile in scrittura
guestsCanModify boolean Se partecipanti diversi dall'organizzatore possono modificare l'evento. (Facoltativo) Il valore predefinito è False. accessibile in scrittura
guestsCanSeeOtherGuests boolean Se partecipanti diversi dall'organizzatore possono vedere chi sono i partecipanti all'evento. (Facoltativo) Il valore predefinito è True. accessibile in scrittura
location string La posizione geografica dell'evento come testo in formato libero. (Facoltativo) accessibile in scrittura
organizer object L'organizzatore dell'evento. Se l'organizzatore è anche un partecipante, questo viene indicato con una voce separata in attendees con il campo organizer impostato su True. Per cambiare l'organizzatore, utilizza l'operazione sposta. Sola lettura, tranne durante l'importazione di un evento. accessibile in scrittura
organizer.displayName string Il nome dell'organizzatore, se disponibile. accessibile in scrittura
organizer.email string L'indirizzo email dell'organizzatore, se disponibile. Deve essere un indirizzo email valido conforme a RFC5322. accessibile in scrittura
originalStartTime.date date La data nel formato "aaaa-mm-gg", se si tratta di un evento che dura tutto il giorno. accessibile in scrittura
originalStartTime.dateTime datetime L'ora, come valore combinato di data e ora (formattato in base a RFC3339). La differenza del fuso orario è obbligatoria, a meno che non venga specificato esplicitamente in timeZone un fuso orario. accessibile in scrittura
originalStartTime.timeZone string Il fuso orario in cui è specificata l'ora. (Formattato come nome di un database di fusi orari IANA, ad esempio "Europa/Zurigo"). Per gli eventi ricorrenti questo campo è obbligatorio e specifica il fuso orario in cui viene espansa la ricorrenza. Per i singoli eventi, questo campo è facoltativo e indica un fuso orario personalizzato per l'inizio e la fine dell'evento. accessibile in scrittura
outOfOfficeProperties nested object Dati sugli eventi fuori sede. Utilizzato se eventType è outOfOffice. accessibile in scrittura
recurrence[] list Elenco di righe RRULE, EXRULE, RDATE ed EXDATE per un evento ricorrente, come specificato in RFC5545. Tieni presente che le righe DTSTART e DTEND non sono consentite in questo campo. le ore di inizio e di fine degli eventi sono specificate nei campi start e end. Questo campo è omesso per singoli eventi o istanze di eventi ricorrenti. accessibile in scrittura
reminders.overrides[] list Se l'evento non utilizza i promemoria predefiniti, vengono elencati i promemoria specifici per l'evento oppure, se non è impostato, non è impostato alcun promemoria per l'evento. Il numero massimo di promemoria di override è 5. accessibile in scrittura
reminders.overrides[].method string Il metodo utilizzato da questo promemoria. I valori possibili sono:
  • "email" - I promemoria vengono inviati via email.
  • "popup" - I promemoria vengono inviati tramite un popup dell'interfaccia utente.

Obbligatorio quando aggiungi un promemoria.

accessibile in scrittura
reminders.overrides[].minutes integer Numero di minuti prima dell'inizio dell'evento quando deve essere attivato il promemoria. I valori validi sono compresi tra 0 e 40320 (4 settimane in minuti).

Obbligatorio quando aggiungi un promemoria.

accessibile in scrittura
reminders.useDefault boolean Indica se i promemoria predefiniti del calendario si applicano all'evento. accessibile in scrittura
sequence integer Numero di sequenza come per iCalendar. accessibile in scrittura
source.title string Titolo della fonte; ad esempio il titolo di una pagina web o l'oggetto di un'email. accessibile in scrittura
source.url string URL dell'origine che rimanda a una risorsa. Lo schema dell'URL deve essere HTTP o HTTPS. accessibile in scrittura
start.date date La data nel formato "aaaa-mm-gg", se si tratta di un evento che dura tutto il giorno. accessibile in scrittura
start.dateTime datetime L'ora, come valore combinato di data e ora (formattato in base a RFC3339). La differenza del fuso orario è obbligatoria, a meno che non venga specificato esplicitamente in timeZone un fuso orario. accessibile in scrittura
start.timeZone string Il fuso orario in cui è specificata l'ora. (Formattato come nome di un database di fusi orari IANA, ad esempio "Europa/Zurigo"). Per gli eventi ricorrenti questo campo è obbligatorio e specifica il fuso orario in cui viene espansa la ricorrenza. Per i singoli eventi, questo campo è facoltativo e indica un fuso orario personalizzato per l'inizio e la fine dell'evento. accessibile in scrittura
status string Stato dell'evento. (Facoltativo) I valori possibili sono:
  • "confirmed" - L'evento è confermato. Questo è lo stato predefinito.
  • "tentative" - L'evento è provvisoriamente confermato.
  • "cancelled" - L'evento è stato annullato (eliminato). Il metodo list restituisce gli eventi annullati solo in caso di sincronizzazione incrementale (quando sono specificati syncToken o updatedMin) oppure se il flag showDeleted è impostato su true. Il metodo get li restituisce sempre.

    Lo stato "Annullato" rappresenta due stati diversi a seconda del tipo di evento:

    1. Le eccezioni annullate di un evento ricorrente non annullato indicano che questa istanza non deve più essere presentata all'utente. I client devono archiviare questi eventi per tutta la durata dell'evento ricorrente principale.

      Per le eccezioni annullate è garantito che i valori dei campi id, recurringEventId e originalStartTime siano compilati solo con la loro compilazione. Gli altri campi potrebbero essere vuoti.

    2. Tutti gli altri eventi annullati rappresentano eventi eliminati. I clienti dovrebbero rimuovere le copie sincronizzate localmente. Questi eventi annullati alla fine scompariranno, quindi non fare affidamento sulla loro disponibilità a tempo indeterminato.

      Per gli eventi eliminati è garantito che il campo id sia compilato solo.

    Nel calendario dell'organizzatore, gli eventi annullati continuano a mostrare i relativi dettagli (riepilogo, luogo e così via) in modo da poterli ripristinare (ripristinare l'eliminazione). Analogamente, gli eventi a cui l'utente è stato invitato e che ha rimosso manualmente continuano a fornire dettagli. Tuttavia, le richieste di sincronizzazione incrementale con showDeleted impostato su false non restituiranno questi dettagli.

    Se un evento cambia il suo organizzatore (ad esempio tramite l'operazione spostamento) e l'organizzatore originale non è nell'elenco dei partecipanti, lascerà un evento annullato in cui è garantito che venga compilato solo il campo id.

accessibile in scrittura
summary string Titolo dell'evento. accessibile in scrittura
transparency string Se l'evento blocca il tempo sul calendario. (Facoltativo) I valori possibili sono:
  • "opaque" - Valore predefinito. ma l'evento blocca il tempo sul calendario. Equivale a impostare Mostra come su Occupato nell'interfaccia utente di Calendar.
  • "transparent" - L'evento non blocca il tempo sul calendario. Equivale a impostare Mostrami come su Disponibile nell'interfaccia utente di Calendar.
accessibile in scrittura
visibility string Visibilità dell'evento. (Facoltativo) I valori possibili sono:
  • "default" - Utilizza la visibilità predefinita per gli eventi nel calendario. Questo è il valore predefinito.
  • "public" - L'evento è pubblico e i dettagli dell'evento sono visibili a tutti i lettori del calendario.
  • "private" - L'evento è privato e solo i partecipanti possono visualizzarne i dettagli.
  • "confidential" - L'evento è privato. Questo valore viene fornito per motivi di compatibilità.
accessibile in scrittura

Risposta

In caso di esito positivo, questo metodo restituisce una risorsa Eventi nel corpo della risposta.

Esempi

Nota: gli esempi di codice disponibili per questo metodo non rappresentano tutti i linguaggi di programmazione supportati (consulta la pagina relativa alle librerie client per un elenco dei linguaggi supportati).

Java

Utilizza la libreria client 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

Utilizza la libreria client 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

Utilizza la libreria client 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

Utilizza la libreria client 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

Prova

Usa Explorer API in basso per chiamare questo metodo sui dati in tempo reale e visualizzare la risposta.