Tipi di evento

Questa pagina spiega la proprietà eventType e le specifiche dei tipi di eventi disponibili nell'API Google Calendar.

Google Calendar consente agli utenti di creare eventi generici, nonché eventi progettati per casi d'uso specifici e con proprietà personalizzate.

Puoi scoprire il tipo di evento nei seguenti punti dell'API:

  • Tutti gli eventi restituiscono un eventType.
  • Imposta eventType quando crei o aggiorni una risorsa evento. Se non è impostato, l'API utilizza 'default'.
  • Specifica eventTypes in una events.list chiamata per elencare gli eventi di tipi specifici. Se non viene specificato alcun tipo, l'API restituisce tutti i tipi di eventi.
  • Specifica eventTypes in una chiamata events.watch per abbonarti agli aggiornamenti degli eventi di tipi specifici. Se non viene specificato alcun tipo, la richiesta si abbona a tutti i tipi di eventi.

Evento predefinito

Gli eventi con il tipo di evento default vengono creati e utilizzati come una delle risorse principali dell'API Calendar. Supportano un'ampia gamma di proprietà per personalizzare ulteriormente l'evento.

Consulta Creare eventi per iniziare a lavorare con gli eventi di Calendar.

Compleanno

I compleanni sono eventi speciali che durano tutto il giorno con una ricorrenza annuale.

Gli utenti possono creare manualmente eventi di compleanno in Calendar. Inoltre, le informazioni sul compleanno vengono sincronizzate con Calendar quando gli utenti aggiungono una persona e includono il suo compleanno e altre date importanti in Contatti Google. Anche i compleanni degli utenti vengono sincronizzati con Calendar dal profilo del loro Account Google.

L'API Calendar supporta i metodi events.get, events.instances e events.list per la lettura degli eventi di compleanno. Puoi impostare eventTypes su 'birthday' per elencare solo gli eventi di compleanno. Se non viene specificato alcun tipo, la risposta elenca i compleanni insieme a tutti gli altri tipi di eventi.

Negli oggetti Event restituiti, esamina il birthdayProperties campo per ulteriori dettagli su questo evento speciale. birthdayProperties ha i seguenti campi:

  • type: tipo di questo evento speciale, che si tratti di un compleanno, un anniversario o un'altra data importante.
  • customTypeName: etichetta specificata dall'utente per questo evento speciale. Questo campo viene compilato se type è impostato su 'custom'.
  • contact: nome della risorsa del contatto a cui è collegato questo evento speciale, se presente. Questo ha il formato 'people/c12345' e può essere utilizzato per recuperare i dettagli di contatto dall'API People.

L'API consente di creare eventi di compleanno utilizzando il events.insert metodo con le seguenti specifiche:

  • eventType è impostato su 'birthday'.
  • start e end campi devono definire un evento che dura tutto il giorno e che si estende esattamente per un giorno.
  • visibility il valore del campo deve essere 'private'.
  • transparency il valore del campo deve essere 'transparent'.
  • Deve avere una ricorrenza annuale, il che significa che il recurrence campo deve essere 'RRULE:FREQ=YEARLY'. Gli eventi di compleanno che cadono il 29 febbraio devono avere la seguente regola di ricorrenza: 'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'.
  • Può avere un colorId, un summary e un reminders.
  • Può avere birthdayProperties. Se specificato, type deve essere 'birthday', e sia customTypeName sia contact devono essere vuoti.
  • Non può avere altre proprietà dell'evento.

L'API consente di aggiornare i colorId, summary e i reminders degli eventi di compleanno utilizzando i metodi events.update e events.patch. Puoi anche aggiornare start e end campi per modificare la data dell'evento. In questo caso, i nuovi valori devono definire un evento che dura tutto il giorno e che si estende esattamente per un giorno. I dettagli temporali di un evento di compleanno non possono essere aggiornati se l'evento è collegato a un contact o se il relativo type è 'self'.

L'API Calendar non consente di creare eventi di compleanno con birthdayProperties personalizzate né di aggiornare queste proprietà. Le date importanti possono essere modificate con l' API People e le modifiche vengono sincronizzate con Calendar. Allo stesso modo, gli utenti possono modificare il proprio compleanno nel profilo del loro Account Googlee questo viene sincronizzato con Calendar.

Le richieste che tentano di creare o aggiornare un compleanno in modo non supportato non vanno a buon fine. In questo caso, esamina il messaggio di errore per identificare il problema.

L'API supporta l'operazione events.import per gli eventi di compleanno; tuttavia, l'evento viene importato come evento predefinito. In altre parole, eventType sarà essere 'default'.

L'API supporta il events.watch metodo per abbonarsi alle modifiche degli eventi di compleanno in Calendar. Puoi impostare eventTypes su 'birthday' per abbonarti agli aggiornamenti degli eventi di compleanno. Se non viene specificato alcun tipo, la richiesta si abbona a tutti i tipi di eventi, inclusi i compleanni.

Puoi eliminare gli eventi di compleanno utilizzando il events.delete metodo dell' API Calendar. L'eliminazione di un evento di compleanno da Calendar non influisce sui dati del profilo di Contatti Google o Account Google.

La modifica dell'organizzatore di un evento di compleanno utilizzando i events.move o i events.update metodi non è supportata.

Eventi da Gmail

Gli eventi generati automaticamente da Gmail hanno il tipo di evento 'fromGmail'.

L'API Calendar non consente di creare questo tipo di evento utilizzando il events.insert metodo.

L'API consente di aggiornare le colorId, reminders, visibility, transparency, status, attendees, private, e shared proprietà estese utilizzando i metodi events.update e events.patch.

L'API supporta i metodi events.get e events.list per la lettura degli eventi da Gmail. Puoi impostare eventTypes su 'fromGmail' per elencare solo gli eventi generati da Gmail. Se non viene specificato alcun tipo, gli eventi da Gmail vengono elencati insieme a tutti gli altri tipi di eventi.

L'API supporta il events.watch metodo per abbonarsi alle modifiche degli eventi da Gmail in Calendar. Se non viene specificato alcun tipo, la richiesta si abbona a tutti i tipi di eventi, incluso 'fromGmail'.

Puoi eliminare gli eventi da Gmail utilizzando il events.delete metodo dell'API Calendar.

La modifica dell'organizzatore di un evento da Gmail utilizzando i events.move o i events.update metodi non è supportata.

Momento di concentrazione, fuori sede e luogo di lavoro

Puoi utilizzare l'API Calendar per creare e gestire eventi che mostrano lo stato degli utenti di Calendar.

Queste funzionalità sono disponibili solo sui calendari principali e per alcuni utenti di Calendar. Per saperne di più, consulta Gestire gli eventi di momento di concentrazione, fuori sede e luogo di lavoro.

Esplorare i tipi di eventi in Apps Script

Apps Script è un linguaggio di scripting cloud basato su JavaScript che consente di creare applicazioni aziendali integrate con Google Workspace. Gli script vengono sviluppati in un editor di codice basato su browser, archiviati ed eseguiti sui server di Google. Consulta anche la guida rapida di Apps Script per iniziare a utilizzare Apps Script per inviare richieste all'API Calendar.

Le seguenti istruzioni descrivono come leggere e gestire gli eventi utilizzando l' API Calendar come servizio avanzato in Apps Script. Per un elenco completo delle risorse e dei metodi dell'API Calendar, consulta la documentazione di riferimento.

Creare e configurare lo script

  1. Crea uno script andando alla pagina script.google.com/create.
  2. Nel riquadro a sinistra, accanto a Servizi, fai clic su Aggiungi un servizio .
  3. Seleziona API Calendar e fai clic su Aggiungi.
  4. Dopo aver attivato l'API, questa viene visualizzata nel riquadro a sinistra. Puoi elencare i metodi e le classi disponibili nell'API digitando Calendar nell'editor.

(Facoltativo) Aggiornare il progetto Cloud

Ogni progetto Apps Script ha un progetto Cloud associato. Lo script può utilizzare il progetto predefinito creato automaticamente da Apps Script. Se vuoi utilizzare un progetto Cloud personalizzato, consulta Passare a un altro progetto Cloud standard. Dopo aver impostato il progetto Cloud, seleziona Editor a sinistra per tornare all' editor di codice.

Aggiungere codice allo script

Il seguente esempio di codice mostra come elencare, leggere e creare eventi con diversi valori eventType.

  1. Incolla quanto segue nell'editor di codice.

    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);
      }
    }
    

    Sostituisci quanto segue:

    • CALENDAR_ID: indirizzo email del calendario su cui recuperare e creare eventi. Questa costante è inizialmente impostata su 'primary', che è una parola chiave per accedere al calendario principale dell' utente che ha eseguito l'accesso. La modifica di questo valore consente di leggere gli eventi nei calendari di altri utenti a cui hai accesso.
    • EVENT_ID: ID dell'evento. Puoi chiamare events.list per recuperare gli ID evento.

Eseguire l'esempio di codice

  1. Sopra l'editor di codice, seleziona la funzione da eseguire dal menu a discesa e fai clic su Esegui.
  2. La prima volta che esegui lo script, ti viene chiesto di autorizzare l'accesso. Esamina e consenti ad Apps Script di accedere al tuo calendario.
  3. Puoi esaminare i risultati dell'esecuzione dello script nel Log di esecuzione visualizzato nella parte inferiore della finestra.