Gestisci i Google Calendar usando il client Gmail

Aggiungi, modifica ed elimina i calendari Gmail

Aspose.Email consente alle applicazioni di gestire i calendari Gmail usando IGmailClient che fornisce funzionalità come aggiungere, eliminare e aggiornare i calendari Gmail. Questa classe client restituisce un elenco di oggetti di tipo ExtendedCalendar che contengono informazioni sugli elementi del calendario Gmail. IGmailClient la classe espone le seguenti funzioni per i calendari:

  • CreateCalendar Può essere usato per inserire un nuovo calendario
  • ListCalendars Può essere usato per ottenere l’elenco di tutti i calendari di un cliente
  • DeleteCalendar Può essere usata per eliminare un calendario
  • FetchCalendar Può essere usata per recuperare un calendario specifico di un client
  • UpdateCalendar Questa funzione è usata per reinserire un calendario modificato di un cliente

Per accedere ai calendari, GoogleTestUser viene inizializzato usando le credenziali dell’account Gmail. GoogleOAuthHelper è usato per ottenere il token di accesso per l’utente, che viene poi usato per inizializzare IGmailClient.

Inserimento, recupero e aggiornamento dei calendari Gmail

Per inserire un calendario, inizializza un oggetto di tipo Calendar e inseriscilo usando CreateCalendar() funzione. CreateCalendar() restituisce l’ID del calendario appena inserito. Questo ID può essere usato per recuperare il calendario dal server. Il seguente frammento di codice mostra come inserire, recuperare e aggiornare il calendario.

Elimina calendari Google specifici

Per eliminare un calendario specifico, dobbiamo ottenere l’elenco di tutti i calendari di un client e poi eliminarlo secondo necessità. ListCalendars() restituisce l’elenco di ExtendedCalendar che contiene i calendari Gmail. Il seguente frammento di codice mostra come eliminare un calendario specifico.

Controllo accesso al calendario

Aspose.Email fornisce il pieno controllo sull’accesso agli elementi del calendario. ListAccessRules() la funzione è esposta da IGmailClient che restituisce l’elenco di AccessControlRule. Le informazioni di una singola regola possono essere recuperate, modificate e salvate nuovamente per il calendario di un client. IGmailClient contiene le seguenti funzioni per gestire le regole di controllo accesso.

  • ListAccessRules Questa funzione fornisce l’elenco di AccessControlRule
  • CreateAccessRule Questa funzione crea una nuova regola di accesso per un calendario.
  • UpdateAccessRule Questa funzione è usata per aggiornare una regola di accesso.
  • FetchAccessRule Può essere usata per recuperare una regola di accesso specifica per il calendario di un client
  • DeleteAccessRule Questa funzione è usata per eliminare una regola di accesso.

Il seguente frammento di codice mostra come utilizzare le funzioni per gestire le regole di accesso:

Impostazioni del client calendario e informazioni sui colori

Aspose.Email supporta l’accesso alle impostazioni del client usando IGmailClient.GetSettings(). Restituisce l’elenco delle impostazioni come mostrato di seguito:

  1. dateFieldOrder
  2. displayAllTimezones
  3. hideInvitations
  4. format24HourTime
  5. defaultCalendarMode
  6. defaultEventLength
  7. locale
  8. remindOnRespondedEventsOnly
  9. alternateCalendar
  10. userLocation
  11. hideWeekends
  12. showDeclinedEvents
  13. weekStart
  14. weather
  15. customCalendarMode
  16. timezoneLabel
  17. timezone
  18. useKeyboardShortcuts
  19. country

Allo stesso modo, le informazioni sui colori per i client possono essere recuperate usando IGmailClient.GetColors(). Questo oggetto di informazioni sui colori restituisce l’elenco dei colori di primo piano, colori di sfondo e data e ora di aggiornamento.

Accedi alle Impostazioni del Client

Il seguente frammento di codice mostra come le funzioni possono essere utilizzate per accedere alle impostazioni del client:

Accesso alle informazioni sui colori

Il seguente frammento di codice mostra come le funzioni possono essere utilizzate per accedere alle impostazioni dei colori del client.

Gestisci gli appuntamenti di Google Calendar

Aspose.Email offre funzionalità per lavorare con gli appuntamenti nei calendari Google. È possibile eseguire le seguenti operazioni sugli appuntamenti in Google Calendar:

  1. Aggiungi appuntamenti.
  2. Recupera l’elenco degli appuntamenti.
  3. Recupera un appuntamento specifico.
  4. Aggiorna un appuntamento.
  5. Sposta l’appuntamento da un calendario a un altro.
  6. Elimina appuntamento.

IGmailClient fornisce funzioni come CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment e DeleteAppointment.

Aggiungi appuntamenti a Google Calendar

Il seguente esempio di codice dimostra la funzione di aggiungere un appuntamento in un calendario. Per farlo, segui i passaggi:

  1. Crea e inserisci un calendario.
  2. Recupera l’elenco degli appuntamenti da un nuovo calendario.
  3. Crea un appuntamento.
  4. Inserisci un appuntamento.

Recupera e aggiorna gli appuntamenti di Google Calendar

Qui il recupero e l’aggiornamento del calendario vengono dimostrati come segue:

  1. Recupera un appuntamento particolare.
  2. Modifica l’appuntamento.
  3. Aggiorna l’appuntamento nel calendario.

Si assume che un calendario con l’ID "calendarId" e l’ID univoco dell’appuntamento "AppointmentUniqueId" siano già stati estratti. Il seguente frammento di codice mostra come recuperare e aggiornare un appuntamento.

Sposta ed elimina gli appuntamenti in Google Calendar

L’appuntamento può essere spostato fornendo il calendario di origine, il calendario di destinazione e l’ID univoco di un appuntamento nel calendario di origine. Il seguente frammento di codice mostra come spostare ed eliminare un appuntamento.

Query FreeBusy per Google Calendar

Aspose.Email fornisce un meccanismo di interrogazione per verificare se un appuntamento è scaduto o meno in base ai criteri. La classe FreebusyQuery è fornita a questo scopo e consente di preparare una query per un calendario specifico.

Questo esempio di codice dimostra la funzionalità di interrogare un calendario. Nel campione vengono eseguite le seguenti operazioni:

  1. Crea e inserisci un calendario
  2. Crea un appuntamento
  3. Inserisci appuntamento
  4. Prepara una FreeBusyQuery
  5. Ottieni il FreebusyResponse
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

// Use the GoogleUser and GoogleOAuthHelper classes below to receive an access token
using (IGmailClient client = GmailClient.GetInstance(accessToken, user.Email))
{
    // Initialize calendar item
    Aspose.Email.Clients.Google.Calendar calendar1 = new Aspose.Email.Clients.Google.Calendar("summary - " + Guid.NewGuid().ToString(), null, null, "Europe/Kiev");

    // Insert calendar and get back id of newly inserted calendar and Fetch the same calendar using calendar id
    string id = client.CreateCalendar(calendar1);
    Aspose.Email.Clients.Google.Calendar cal1 = client.FetchCalendar(id);
    string calendarId1 = cal1.Id;
    try
    {
        // Get list of appointments in newly inserted calendar. It should be zero
        Appointment[] appointments = client.ListAppointments(calendarId1);
        if (appointments.Length != 0)
        {
            Console.WriteLine("Wrong number of appointments");
            return;
        }

        // Create a new appointment and Calculate appointment start and finish time
        DateTime startDate = DateTime.Now;
        DateTime endDate = startDate.AddHours(1);

        // Create attendees list for appointment
        MailAddressCollection attendees = new MailAddressCollection();
        attendees.Add("user1@domain.com");
        attendees.Add("user2@domain.com");

        // Create appointment
        Appointment app1 = new Appointment("Location - " + Guid.NewGuid().ToString(), startDate, endDate, "user2@domain.com", attendees);
        app1.Summary = "Summary - " + Guid.NewGuid().ToString();
        app1.Description = "Description - " + Guid.NewGuid().ToString();
        app1.StartTimeZone = "Europe/Kiev";
        app1.EndTimeZone = "Europe/Kiev";

        // Insert the newly created appointment and get back the same in case of successful insertion
        Appointment app2 = client.CreateAppointment(calendarId1, app1);

        // Create Freebusy query by setting min/max timeand time zone
        FreebusyQuery query = new FreebusyQuery();
        query.TimeMin = DateTime.Now.AddDays(-1);
        query.TimeMax = DateTime.Now.AddDays(1);
        query.TimeZone = "Europe/Kiev";

        // Set calendar item to search and Get the reponse of query containing 
        query.Items.Add(cal1.Id);
        FreebusyResponse resp = client.GetFreebusyInfo(query);
        // Delete the appointment
        client.DeleteAppointment(calendarId1, app2.UniqueId);
    }
    finally
    {
        // Delete the calendar
        client.DeleteCalendar(cal1.Id);
    }
}