Lavorare con i Calendari Gmail
Aggiungere, Modificare ed Eliminare un Calendario
Aspose.Email consente alle applicazioni di gestire i calendari Gmail usando IGmailClient che offre 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 Per inserire un nuovo calendario
- listCalendars
Ottieni l’elenco di tutti i calendari di un client
- 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 client
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 successivamente usato per inizializzare IGmailClient.
Inserisci, Recupera e Aggiorna
Per inserire un calendario, inizializza un Calendar oggetto di tipo e inserirlo 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.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
// Insert, get and update calendar
Calendar calendar = new Calendar("Summary", "Description", "Location", "America/Los_Angeles");
// Insert calendar and Retrieve same calendar using id
String id = client.createCalendar(calendar);
Calendar cal = client.fetchCalendar(id);
// Change information in the fetched calendar and Update calendar
cal.setDescription("New Description");
cal.setLocation("New Location");
client.updateCalendar(cal);
}
Elimina un Calendario Specifico
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.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
// Access and delete calendar with summary starting from "Calendar summary"
String summary = "Calendar summary";
// Get calendars list
ExtendedCalendar[] lst = client.listCalendars();
for (ExtendedCalendar extCal : lst) {
// Delete selected calendars
if (extCal.getSummary().startsWith(summary))
client.deleteCalendar(extCal.getId());
}
}
Lavorare con il Controllo Accessi del Calendario
Aspose.Email fornisce il pieno controllo sul controllo accessi 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 accessi.
- 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 le funzioni sono usate per gestire le regole di accesso:
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
// Retrieve list of calendars for the current client
ExtendedCalendar[] calendarList = client.listCalendars();
// Get first calendar id and retrieve list of AccessControlRule for the first calendar
String calendarId = calendarList[0].getId();
AccessControlRule[] roles1 = client.listAccessRules(calendarId);
// Create a local access control rule and Set rule properties
AccessControlRule rule = new AccessControlRule();
rule.setRole(AccessRole.reader);
rule.setScope(new AclScope(AclScopeType.user, email2));
// Insert new rule for the calendar. It returns the newly created rule
AccessControlRule createdRule = client.createAccessRule(calendarId, rule);
// Get list of rules
AccessControlRule[] roles2 = client.listAccessRules(calendarId);
// Current list length should be 1 more than the earlier one
if (roles1.length + 1 == roles2.length) {
System.out.println("List lengths are ok");
} else {
System.out.println("List lengths are not ok");
return;
}
// Change rule and Update the rule for the selected calendar
createdRule.setRole(AccessRole.writer);
AccessControlRule updatedRule = client.updateAccessRule(calendarId, createdRule);
// Retrieve individaul rule against a calendar
AccessControlRule fetchedRule = client.fetchAccessRule(calendarId, createdRule.getId());
// Delete particular rule against a given calendar and Retrieve the all rules list for the same calendar
client.deleteAccessRule(calendarId, createdRule.getId());
AccessControlRule[] roles3 = client.listAccessRules(calendarId);
// Check that current rules list length should be equal to the original list length before adding and deleting the rule
if (roles1.length == roles3.length) {
System.out.println("List lengths are same");
} else {
System.out.println("List lengths are not equal");
return;
}
}
Lavorare con le Impostazioni del Client e le Informazioni sui Colori
Aspose.Email supporta l’accesso alle impostazioni del client usando IGmailClient.getSettings. Restituisce l’elenco delle impostazioni come indicato di seguito:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- 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 sono usate per accedere alle impostazioni del client:
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
// Retrieve client settings
Dictionary<String, String> settings = client.getSettings();
if (settings.size() < 1) {
System.out.println("No settings are available.");
return;
}
// Traverse the settings list
for (KeyValuePair<String, String> pair : settings) {
// Get the setting value and test if settings are ok
String value = client.getSetting(pair.getKey());
if (pair.getValue().equals(value)) {
System.out.println("Key = " + pair.getKey() + ", Value = " + pair.getValue());
} else {
System.out.println("Settings could not be retrieved");
}
}
}
Accedi alle Informazioni sui Colori
Il seguente frammento di codice mostra come le funzioni sono usate per accedere alle impostazioni dei colori del client.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
ColorsInfo colors = client.getColors();
Dictionary<String, Colors> palettes = colors.getCalendar();
// Traverse the settings list
for (KeyValuePair<String, Colors> pair : palettes) {
System.out.println("Key = " + pair.getKey() + ", Color = " + pair.getValue());
}
System.out.println("Update Date = " + colors.getUpdated());
}
Lavorare con gli Appuntamenti
Aspose.Email fornisce funzionalità per lavorare con Appuntamenti nei Google calendars. Di seguito è l’elenco delle attività che è possibile eseguire sugli appuntamenti in Google Calendar:
- Aggiungi appuntamenti - createAppointment, importAppointment
- Recupera l’elenco degli appuntamenti - listAppointments
- Recupera un appuntamento specifico - fetchAppointment, listAppointmentInstances
- Aggiorna un appuntamento - updateAppointment
- Sposta l’appuntamento da un calendario all’altro - moveAppointment
- Elimina appuntamento - deleteAppointment
Aggiunta di un Appuntamento
Il seguente esempio di codice dimostra la funzionalità di aggiungere un appuntamento in un calendario. In questo esempio vengono seguiti i seguenti passaggi:
- Crea e inserisci un calendario.
- Recupera l’elenco degli appuntamenti da un nuovo calendario.
- Crea un appuntamento.
- Inserisci l’appuntamento.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
// Create local calendar
Calendar calendar1 = new Calendar("Summary", null, null, "Europe/Kiev");
// Insert calendar and get id of inserted calendar and Get back calendar using an id
String id = client.createCalendar(calendar1);
Calendar cal1 = client.fetchCalendar(id);
String calendarId1 = cal1.getId();
try {
// Retrieve list of appointments from the first calendar
Appointment[] appointments = client.listAppointments(calendarId1);
if (appointments.length > 0) {
System.out.println("Wrong number of appointments");
return;
}
// Get current time and Calculate time after an hour from now
java.util.Calendar c = java.util.Calendar.getInstance();
Date startDate = c.getTime();
c.add(java.util.Calendar.HOUR_OF_DAY, 1);
Date endDate = c.getTime();
// Initialize a mail address collection and set attendees mail address
MailAddressCollection attendees = new MailAddressCollection();
attendees.add("User1.EMail@domain.com");
attendees.add("User3.EMail@domain.com");
// Create an appointment with above attendees
Appointment app1 = new Appointment("Location", startDate, endDate, MailAddress.to_MailAddress(email2), attendees);
// Set appointment summary, description, start/end time zone
app1.setSummary("New Summary");
app1.setDescription("New Description");
app1.setStartTimeZone("Europe/Kiev");
app1.setEndTimeZone("Europe/Kiev");
// Insert appointment in the first calendar inserted above and get back inserted appointment
Appointment app2 = client.createAppointment(calendarId1, app1);
// Retrieve appointment using unique id
Appointment app3 = client.fetchAppointment(calendarId1, app2.getUniqueId());
} catch (Exception ex) {
System.err.println(ex);
}
}
Recupera e Aggiorna Appuntamento
Qui il recupero e l’aggiornamento del calendario vengono dimostrati come segue:
- Recupera un appuntamento particolare.
- Modifica l’appuntamento.
- Aggiorna l’appuntamento nel calendario.
Si assume che un calendario con id "calendarId" e l’ID univoco dell’appuntamento "AppointmentUniqueId" siano già estratti. Il frammento di codice seguente mostra come recuperare e aggiornare l’appuntamento.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
String calendarId = client.listCalendars()[0].getId();
String AppointmentUniqueId = client.listAppointments(calendarId)[0].getUniqueId();
// Retrieve Appointment
Appointment app3 = client.fetchAppointment(calendarId, AppointmentUniqueId);
// Change the appointment information
app3.setSummary("New Summary");
app3.setDescription("New Description");
app3.setLocation("New Location");
app3.setFlags(AppointmentFlags.AllDayEvent);
java.util.Calendar c = java.util.Calendar.getInstance();
c.add(java.util.Calendar.HOUR_OF_DAY, 2);
app3.setStartDate(c.getTime());
c.add(java.util.Calendar.HOUR_OF_DAY, 1);
app3.setEndDate(c.getTime());
app3.setStartTimeZone("Europe/Kiev");
app3.setEndTimeZone("Europe/Kiev");
// Update the appointment and get back updated appointment
Appointment app4 = client.updateAppointment(calendarId, app3);
}
Sposta ed Elimina Appuntamento
Appointment può essere spostato fornendo il calendario di origine, il calendario di destinazione e l’ID univoco dell’appuntamento nel calendario di origine. Il frammento di codice seguente mostra come spostare ed eliminare l’appuntamento.
try (IGmailClient client = GmailClient.getInstance(accessToken, email)) {
String SourceCalendarId = client.listCalendars()[0].getId();
String DestinationCalendarId = client.listCalendars()[1].getId();
String TargetAppUniqueId = client.listAppointments(SourceCalendarId)[0].getUniqueId();
// Retrieve the list of appointments in the destination calendar before moving the appointment
Appointment[] appointments = client.listAppointments(DestinationCalendarId);
System.out.println("Before moving count = " + appointments.length);
Appointment Movedapp = client.moveAppointment(SourceCalendarId, DestinationCalendarId, TargetAppUniqueId);
// Retrieve the list of appointments in the destination calendar after moving the appointment
appointments = client.listAppointments(DestinationCalendarId);
System.out.println("After moving count = " + appointments.length);
// Delete particular appointment from a calendar using unique id
client.deleteAppointment(DestinationCalendarId, Movedapp.getUniqueId());
// Retrieve the list of appointments. It should be one less than the earlier appointments in the destination calendar
appointments = client.listAppointments(DestinationCalendarId);
System.out.println("After deleting count = " + appointments.length);
}