Bekerja dengan Kalender Gmail
Menambah, Mengedit, dan Menghapus Kalender
Aspose.Email memungkinkan aplikasi mengelola kalender Gmail menggunakan IGmailClient yang menyediakan fitur seperti menambah, menghapus, dan memperbarui kalender Gmail. Kelas klien ini mengembalikan daftar objek tipe ExtendedCalendar yang berisi informasi tentang item kalender Gmail. IGmailClient kelas ini menyediakan fungsi-fungsi berikut untuk kalender:
- createCalendar Untuk menyisipkan kalender baru
- listCalendars
Dapatkan daftar semua kalender milik klien
- deleteCalendar Dapat digunakan untuk menghapus kalender
- fetchCalendar Dapat digunakan untuk mengambil kalender tertentu milik klien
- updateCalendar Fungsi ini digunakan untuk menyisipkan kembali kalender yang dimodifikasi milik klien
Untuk mengakses kalender, GoogleTestUser diinisialisasi menggunakan kredensial akun Gmail. GoogleOAuthHelper digunakan untuk mendapatkan token akses pengguna yang selanjutnya digunakan untuk menginisialisasi IGmailClient.
Sisipkan, Ambil, dan Perbarui
Untuk menyisipkan kalender, inisialisasi sebuah Calendar objek tipe dan menyisipkannya menggunakan createCalendar fungsi. createCalendar mengembalikan ID kalender yang baru dimasukkan. ID ini dapat digunakan untuk mengambil kalender dari server. Potongan kode berikut menunjukkan cara menyisipkan, mengambil, dan memperbarui kalender.
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);
}
Hapus Kalender Tertentu
Untuk menghapus kalender tertentu, kita harus mendapatkan daftar semua kalender klien dan kemudian menghapusnya sesuai kebutuhan. listCalendars mengembalikan daftar ExtendedCalendar yang berisi kalender Gmail. Potongan kode berikut menunjukkan cara menghapus kalender tertentu.
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());
}
}
Bekerja dengan Kontrol Akses Kalender
Aspose.Email memberikan kontrol penuh atas kontrol akses ke item kalender. listAccessRules fungsi disediakan oleh IGmailClient yang mengembalikan daftar AccessControlRule. Informasi aturan individual dapat diambil, dimodifikasi, dan disimpan kembali untuk kalender klien. IGmailClient berisi fungsi-fungsi berikut untuk mengelola aturan kontrol akses.
- listAccessRules Fungsi ini menyediakan daftar AccessControlRule
- createAccessRule Fungsi ini membuat aturan akses baru untuk sebuah kalender.
- updateAccessRule Fungsi ini digunakan untuk memperbarui aturan akses.
- fetchAccessRule Dapat digunakan untuk mengambil aturan akses tertentu untuk kalender klien
- deleteAccessRule Fungsi ini digunakan untuk menghapus aturan akses.
Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengelola aturan akses:
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;
}
}
Bekerja dengan Pengaturan Klien dan Info Warna
Aspose.Email mendukung akses ke pengaturan Klien dengan menggunakan IGmailClient.getSettings. Mengembalikan daftar pengaturan seperti di bawah ini:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
Info warna untuk klien juga dapat diambil menggunakan IGmailClient.getColors. Objek info warna ini mengembalikan daftar warna Latar Depan, warna latar belakang serta tanggal dan waktu pembaruan.
Akses Pengaturan Klien
Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengakses pengaturan klien:
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");
}
}
}
Akses Info Warna
Potongan kode berikut menunjukkan cara fungsi yang digunakan untuk mengakses pengaturan warna klien.
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());
}
Bekerja dengan Janji
Aspose.Email menyediakan fitur untuk bekerja dengan Janji di kalender Google. Berikut adalah daftar tugas yang dapat dilakukan pada janji di kalender Google:
- Tambahkan Janji - createAppointment, importAppointment
- Ambil daftar janji - listAppointments
- Ambil janji tertentu - fetchAppointment, listAppointmentInstances
- Perbarui sebuah janji - updateAppointment
- Pindahkan janji dari satu kalender ke kalender lain - moveAppointment
- Hapus janji - deleteAppointment
Menambahkan Janji
Contoh kode berikut menunjukkan fitur menambahkan janji dalam kalender. Dalam contoh ini langkah‑langkah berikut diikuti:
- Buat dan sisipkan kalender.
- Ambil daftar janji dari kalender baru.
- Buat sebuah janji.
- Sisipkan janji.
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);
}
}
Ambil dan Perbarui Janji
Berikut ini demonstrasi pengambilan dan pembaruan kalender:
- Ambil janji tertentu.
- Ubah janji.
- Perbarui janji di kalender.
Diasumsikan bahwa kalender dengan id "calendarId" dan ID unik janji "AppointmentUniqueId" sudah diekstrak. Potongan kode berikut menunjukkan cara mengambil dan memperbarui janji.
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);
}
Pindah dan Hapus Janji
Appointment dapat dipindahkan dengan memberikan kalender sumber, kalender tujuan, dan ID unik janji di kalender sumber. Potongan kode berikut menunjukkan cara memindahkan dan menghapus janji.
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);
}