ทำงานกับปฏิทิน Gmail
การเพิ่ม, แก้ไขและลบปฏิทิน
Aspose.Email ให้แอปพลิเคชันจัดการปฏิทิน Gmail โดยใช้ IGmailClient ซึ่งให้ฟีเจอร์เช่นการเพิ่ม, ลบและอัปเดตปฏิทิน Gmail คลาสไคลเอนต์นี้ส่งคืนรายการอ็อบเจกต์ประเภท ExtendedCalendar ที่มีข้อมูลเกี่ยวกับรายการปฏิทิน Gmail IGmailClient คลาสนี้เผยฟังก์ชันต่อไปนี้สำหรับปฏิทิน:
- createCalendar เพื่อแทรกปฏิทินใหม่
- listCalendars
รับรายการปฏิทินทั้งหมดของไคลเอนต์
- deleteCalendar สามารถใช้เพื่อทำการลบปฏิทิน
- fetchCalendar สามารถใช้เพื่อดึงปฏิทินเฉพาะของไคลเอนต์
- updateCalendar ฟังก์ชันนี้ใช้สำหรับแทรกกลับปฏิทินที่แก้ไขของไคลเอนต์
เพื่อเข้าถึงปฏิทิน GoogleTestUser จะถูกเริ่มต้นด้วยข้อมูลประจำตัวบัญชี Gmail GoogleOAuthHelper ใช้เพื่อรับโทเค็นการเข้าถึงสำหรับผู้ใช้ซึ่งต่อมาจะใช้ในการเริ่มต้น IGmailClient.
แทรก, ดึงและอัปเดต
สำหรับการแทรกปฏิทิน ให้เริ่มต้น Calendar อ็อบเจกต์ประเภทและแทรกโดยใช้ createCalendar ฟังก์ชัน. createCalendar ส่งคืน id ของปฏิทินที่เพิ่งแทรกใหม่ ID นี้สามารถใช้เพื่อดึงปฏิทินจากเซิร์ฟเวอร์ได้ โค้ดตัวอย่างต่อไปนี้แสดงวิธีการแทรก ดึง และอัปเดตปฏิทิน
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);
}
ลบปฏิทินเฉพาะ
เพื่อทำการลบปฏิทินเฉพาะ เราต้องดึงรายการปฏิทินทั้งหมดของไคลเอนต์แล้วลบตามที่ต้องการ listCalendars ส่งคืนรายการของ ExtendedCalendar ซึ่งมีปฏิทิน Gmail อยู่ โค้ดตัวอย่างต่อไปนี้แสดงวิธีการลบปฏิทินเฉพาะ
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());
}
}
ทำงานกับการควบคุมการเข้าถึงปฏิทิน
Aspose.Email มีการควบคุมเต็มรูปแบบต่อการเข้าถึงรายการปฏิทิน listAccessRules ฟังก์ชันนี้เปิดเผยโดย IGmailClient ซึ่งส่งคืนรายการของ AccessControlRule. สามารถดึงข้อมูลกฎแต่ละรายการ, แก้ไขและบันทึกกลับสำหรับปฏิทินของไคลเอนต์ IGmailClient มีฟังก์ชันต่อไปนี้สำหรับจัดการกฎการควบคุมการเข้าถึง
- listAccessRules ฟังก์ชันนี้ให้รายการของ AccessControlRule
- createAccessRule ฟังก์ชันนี้สร้างกฎการเข้าถึงใหม่สำหรับปฏิทิน
- updateAccessRule ฟังก์ชันนี้ใช้สำหรับอัปเดตกฎการเข้าถึง
- fetchAccessRule สามารถใช้เพื่อดึงกฎการเข้าถึงเฉพาะสำหรับปฏิทินของไคลเอนต์
- deleteAccessRule ฟังก์ชันนี้ใช้สำหรับลบกฎการเข้าถึง
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันเพื่อจัดการกฎการเข้าถึง:
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;
}
}
ทำงานกับการตั้งค่าไคลเอนต์และข้อมูลสี
Aspose.Email รองรับการเข้าถึงการตั้งค่าไคลเอนต์โดยใช้ IGmailClient.getSettings. มันส่งคืนรายการการตั้งค่าตามที่ระบุด้านล่าง:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
เช่นเดียวกัน ข้อมูลสีสำหรับไคลเอนต์สามารถดึงได้โดยใช้ IGmailClient.getColors. วัตถุข้อมูลสีนี้ส่งคืนรายการสีพื้นหน้า สีพื้นหลัง และวันที่และเวลาที่อัปเดต
เข้าถึงการตั้งค่าไคลเอนต์
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันเพื่อเข้าถึงการตั้งค่าของไคลเอนต์:
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");
}
}
}
เข้าถึงข้อมูลสี
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันเพื่อเข้าถึงการตั้งค่าสีของไคลเอนต์
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());
}
ทำงานกับนัดหมาย
Aspose.Email มีฟีเจอร์สำหรับทำงานกับ นัดหมาย ในปฏิทิน Google ต่อไปนี้คือรายการงานที่สามารถทำได้กับนัดหมายในปฏิทิน Google:
- เพิ่มนัดหมาย - createAppointment, importAppointment
- ดึงรายการนัดหมาย - listAppointments
- ดึงข้อมูลนัดหมายเฉพาะ - fetchAppointment, listAppointmentInstances
- อัปเดตนัดหมาย - updateAppointment
- ย้ายนัดหมายจากปฏิทินหนึ่งไปยังอีกปฏิทินหนึ่ง - moveAppointment
- ลบนัดหมาย - deleteAppointment
การเพิ่มนัดหมาย
ตัวอย่างโค้ดต่อไปนี้แสดงฟีเจอร์การเพิ่มนัดหมายในปฏิทิน. ในตัวอย่างนี้ทำตามขั้นตอนต่อไปนี้:
- สร้างและแทรกปฏิทิน.
- ดึงรายการนัดหมายจากปฏิทินใหม่.
- สร้างนัดหมาย.
- แทรกนัดหมาย.
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);
}
}
ดึงและอัปเดตนัดหมาย
ที่นี่จะแสดงการดึงและอัปเดตปฏิทินตามที่ต่อไปนี้:
- ดึงนัดหมายบางส่วน.
- แก้ไขนัดหมาย.
- อัปเดตนัดหมายในปฏิทิน.
ถือว่ามีปฏิทินที่มี id "calendarId" และรหัสเฉพาะของนัดหมาย "AppointmentUniqueId" ถูกดึงออกแล้ว. โค้ดตัวอย่างต่อไปนี้แสดงวิธีการดึงและอัปเดตนัดหมาย.
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);
}
ย้ายและลบนัดหมาย
Appointment สามารถย้ายได้โดยระบุปฏิทินต้นทาง, ปฏิทินปลายทางและรหัสเฉพาะของนัดหมายในปฏิทินต้นทาง. โค้ดตัวอย่างต่อไปนี้แสดงวิธีการย้ายและลบนัดหมาย.
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);
}