Werken met Gmail‑agenda's
Een agenda toevoegen, bewerken en verwijderen
Aspose.Email stelt toepassingen in staat Gmail‑agenda’s te beheren met behulp van IGmailClient die functies biedt zoals het toevoegen, verwijderen en bijwerken van Gmail‑agenda’s. Deze client‑klasse retourneert een lijst van ExtendedCalendar‑typeobjecten die informatie over de Gmail‑agenda‑items bevatten. IGmailClient klasse biedt de volgende functies voor agenda’s:
- createCalendar Om een nieuwe agenda in te voegen
- listCalendars
Lijst van alle agenda’s van een client ophalen
- deleteCalendar Kan worden gebruikt om een agenda te verwijderen
- fetchCalendar Kan worden gebruikt om een specifieke agenda van een client op te halen
- updateCalendar Deze functie wordt gebruikt om een gewijzigde agenda van een client opnieuw in te voegen
Om toegang te krijgen tot de agenda’s, wordt GoogleTestUser geïnitialiseerd met Gmail‑accountgegevens. GoogleOAuthHelper wordt gebruikt om het toegangstoken voor de gebruiker te verkrijgen, dat vervolgens wordt gebruikt om te initialiseren IGmailClient.
Invoegen, ophalen en bijwerken
Om een agenda in te voegen, initialiseert u een Calendar type‑object en voeg het in met behulp van createCalendar functie. createCalendar geeft de id van de nieuw toegevoegde agenda. Deze id kan worden gebruikt om de agenda van de server op te halen. De volgende codefragment laat zien hoe een agenda in te voegen, op te halen en bij te werken.
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);
}
Specifieke agenda verwijderen
Om een specifieke agenda te verwijderen, moeten we de lijst van alle agenda’s van een client ophalen en vervolgens verwijderen zoals nodig. listCalendars geeft de lijst van ExtendedCalendar die Gmail‑agenda’s bevat. De volgende codefragment laat zien hoe een specifieke agenda te verwijderen.
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());
}
}
Werken met agenda‑toegangscontrole
Aspose.Email biedt volledige controle over de toegangscontrole op agenda‑items. listAccessRules functie wordt aangeboden door IGmailClient die een lijst geeft van AccessControlRule. Informatie over individuele regels kan worden opgehaald, aangepast en terug opgeslagen voor de agenda van een client. IGmailClient bevat de volgende functies voor het beheren van de toegangscontrolegeregels.
- listAccessRules Deze functie biedt een lijst van AccessControlRule
- createAccessRule Deze functie maakt een nieuwe toegangsregel voor een agenda aan.
- updateAccessRule Deze functie wordt gebruikt om een toegangsregel bij te werken.
- fetchAccessRule Kan worden gebruikt om een specifieke toegangsregel voor de agenda van een client op te halen
- deleteAccessRule Deze functie wordt gebruikt om een toegangsregel te verwijderen.
De volgende codefragment laat zien hoe de functies worden gebruikt voor het beheren van de toegangsregels:
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;
}
}
Werken met clientinstellingen en kleurinfo
Aspose.Email ondersteunt het benaderen van clientinstellingen via IGmailClient.getSettings. Het retourneert een lijst met instellingen zoals hieronder weergegeven:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
Kleurinfo voor clients kan op dezelfde manier ook worden opgehaald met IGmailClient.getColors. Dit kleurinfo-object geeft de lijst van voorgrondkleuren, achtergrondkleuren en bijgewerkte datum en tijd terug.
Clientinstellingen openen
De volgende codefragment laat zien hoe de functies worden gebruikt voor het benaderen van de clientinstellingen:
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");
}
}
}
Kleurinfo openen
De volgende codefragment laat zien hoe de functies worden gebruikt voor het benaderen van de kleuropties van de 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());
}
Werken met afspraken
Aspose.Email biedt functies voor werken met Afspraken in Google agenda’s. Hieronder staat de lijst met taken die kunnen worden uitgevoerd voor afspraken in Google Agenda:
- Afspraken toevoegen - createAppointment, importAppointment
- Lijst met afspraken ophalen - listAppointments
- Specifieke afspraak ophalen - fetchAppointment, listAppointmentInstances
- Een afspraak bijwerken - updateAppointment
- Verplaats afspraak van de ene agenda naar de andere - moveAppointment
- Afspraak verwijderen - deleteAppointment
Een afspraak toevoegen
Het volgende codevoorbeeld laat de functie zien voor het toevoegen van een afspraak aan een agenda. In dit voorbeeld worden de volgende stappen doorlopen:
- Een agenda maken en invoegen.
- Lijst met afspraken uit een nieuwe agenda ophalen.
- Een afspraak maken.
- Afspraak invoegen.
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);
}
}
Afspraak ophalen en bijwerken
Hier wordt het ophalen en bijwerken van een agenda als volgt gedemonstreerd:
- Bepaalde afspraak ophalen.
- De afspraak aanpassen.
- De afspraak in de agenda bijwerken.
Er wordt aangenomen dat een agenda met id "calendarId" en een afspraak met unieke id "AppointmentUniqueId" al zijn opgehaald. Het volgende code‑fragment toont hoe u een afspraak kunt ophalen en bijwerken.
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);
}
Afspraak verplaatsen en verwijderen
Appointment kan worden verplaatst door de bronagenda, doelagenda en de unieke ID van de afspraak in de bronagenda op te geven. De volgende code‑fragment toont hoe u een afspraak kunt verplaatsen en verwijderen.
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);
}