Arbeiten mit Gmail-Kalendern
Hinzufügen, Bearbeiten und Löschen eines Kalenders
Aspose.Email ermöglicht Anwendungen, die Gmail‑Kalender zu verwalten mittels IGmailClient die Funktionen wie Hinzufügen, Löschen und Aktualisieren von Gmail‑Kalendern bereitstellt. Diese Client‑Klasse gibt eine Liste von ExtendedCalendar‑Objekten zurück, die Informationen zu den Gmail‑Kalenderelementen enthalten. IGmailClient Klasse stellt folgende Funktionen für Kalender bereit:
- createCalendar Um einen neuen Kalender einzufügen
- listCalendars
Liste aller Kalender eines Clients abrufen
- deleteCalendar Sie kann verwendet werden, um einen Kalender zu löschen
- fetchCalendar Sie kann verwendet werden, um einen bestimmten Kalender eines Clients abzurufen
- updateCalendar Diese Funktion wird zum Wiedereinfügen eines modifizierten Kalenders eines Clients verwendet
Um auf die Kalender zuzugreifen, wird GoogleTestUser mit Gmail‑Kontodaten initialisiert. GoogleOAuthHelper wird verwendet, um das Zugriffstoken für den Nutzer zu erhalten, welches anschließend zur Initialisierung verwendet wird IGmailClient.
Einfügen, Abrufen und Aktualisieren
Zum Einfügen eines Kalenders initialisieren Sie ein Calendar Typ‑Objekt und fügen Sie es ein mit createCalendar Funktion. createCalendar gibt die ID des neu eingefügten Kalenders zurück. Diese ID kann verwendet werden, um den Kalender vom Server abzurufen. Das folgende Code‑Snippet zeigt, wie man Kalender einfügt, abruft und aktualisiert.
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);
}
Bestimmten Kalender löschen
Um einen bestimmten Kalender zu löschen, müssen wir die Liste aller Kalender eines Clients abrufen und dann nach Bedarf löschen. listCalendars gibt die Liste zurück von ExtendedCalendar die Gmail‑Kalender enthält. Das folgende Code‑Snippet zeigt, wie ein bestimmter Kalender gelöscht wird.
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());
}
}
Arbeiten mit Kalender‑Zugriffskontrolle
Aspose.Email bietet vollständige Kontrolle über die Zugriffskontrolle der Kalenderelemente. listAccessRules Funktion wird bereitgestellt von IGmailClient die eine Liste von zurückgibt AccessControlRule. Einzelne Regelinformationen können für den Kalender eines Clients abgerufen, geändert und zurückgespeichert werden. IGmailClient enthält die folgenden Funktionen zum Verwalten der Zugriffssteuerungsregeln.
- listAccessRules Diese Funktion liefert eine Liste von AccessControlRule
- createAccessRule Diese Funktion erstellt eine neue Zugriffsregel für einen Kalender.
- updateAccessRule Diese Funktion wird zum Aktualisieren einer Zugriffsregel verwendet.
- fetchAccessRule Sie kann verwendet werden, um eine bestimmte Zugriffsregel für den Kalender eines Clients abzurufen
- deleteAccessRule Diese Funktion wird zum Löschen einer Zugriffsregel verwendet.
Das folgende Code‑Snippet zeigt Ihnen, wie die Funktionen zum Verwalten der Zugriffsregeln verwendet werden:
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;
}
}
Arbeiten mit Client‑Einstellungen und Farbinfo
Aspose.Email unterstützt den Zugriff auf die Client‑Einstellungen mittels IGmailClient.getSettings. Sie gibt eine Liste der Einstellungen zurück, wie unten angegeben:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- Gebietsschema
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- Wetter
- customCalendarMode
- timezoneLabel
- Zeitzone
- useKeyboardShortcuts
- Land
Ähnliche Farbinfo für Clients kann ebenfalls abgerufen werden mit IGmailClient.getColors. Dieses Farbinfo‑Objekt gibt die Liste der Vordergrundfarben, Hintergrundfarben sowie das Aktualisierungsdatum und die -zeit zurück.
Zugriff auf Client‑Einstellungen
Das folgende Code‑Snippet zeigt Ihnen, wie die Funktionen zum Zugriff auf die Client‑Einstellungen verwendet werden:
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");
}
}
}
Zugriff auf Farbinfo
Das folgende Code‑Snippet zeigt Ihnen, wie die Funktionen zum Zugriff auf die Farbeeinstellungen des Clients verwendet werden.
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());
}
Arbeiten mit Terminen
Aspose.Email bietet Funktionen zum Arbeiten mit Termine in Google-Kalendern. Nachfolgend die Liste der Aufgaben, die mit Terminen im Google-Kalender durchgeführt werden können:
- Termine hinzufügen - createAppointment, importAppointment
- Liste der Termine abrufen - listAppointments
- Bestimmten Termin abrufen - fetchAppointment, listAppointmentInstances
- Einen Termin aktualisieren - updateAppointment
- Termin von einem Kalender zu einem anderen verschieben - moveAppointment
- Termin löschen - deleteAppointment
Termin hinzufügen
Das folgende Code‑Beispiel demonstriert die Funktion, einen Termin zu einem Kalender hinzuzufügen. In diesem Beispiel werden folgende Schritte durchgeführt:
- Einen Kalender erstellen und einfügen.
- Liste von Terminen aus einem neuen Kalender abrufen.
- Einen Termin erstellen.
- Termin einfügen.
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);
}
}
Termin abrufen und aktualisieren
Hier werden das Abrufen und Aktualisieren des Kalenders wie folgt demonstriert:
- Bestimmten Termin abrufen.
- Den Termin ändern.
- Den Termin im Kalender aktualisieren.
Es wird angenommen, dass ein Kalender mit der ID "calendarId" und die eindeutige Termin-ID "AppointmentUniqueId" bereits extrahiert wurden. Das folgende Code‑Snippet zeigt, wie man den Termin abruft und aktualisiert.
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);
}
Termin verschieben und löschen
Appointment kann verschoben werden, indem der Quellkalender, Zielkalender und die eindeutige ID des Termins im Quellkalender angegeben werden. Das folgende Code‑Snippet zeigt, wie man einen Termin verschiebt und löscht.
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);
}