Gmail Takvimleri ile Çalışma
Takvim Ekleme, Düzenleme ve Silme
Aspose.Email, uygulamaların Gmail takvimlerini şununla yönetmesine olanak tanır: IGmailClient Gmail takvimlerini ekleme, silme ve güncelleme gibi özellikler sağlar. Bu istemci sınıfı, Gmail takvim öğeleri hakkında bilgi içeren ExtendedCalendar tipinde nesnelerin listesini döndürür. IGmailClient sınıf, takvimler için aşağıdaki işlevleri sunar:
- createCalendar Yeni takvim eklemek için
- listCalendars
Bir müşterinin tüm takvimlerinin listesini al
- deleteCalendar Bir takvimi silmek için kullanılabilir.
- fetchCalendar Bir müşterinin belirli bir takvimini almak için kullanılabilir.
- updateCalendar Bu işlev, bir müşterinin değiştirilmiş takvimini geri eklemek için kullanılır.
Takvimlere erişmek için, GoogleTestUser Gmail hesabı kimlik bilgileriyle başlatılır. GoogleOAuthHelper, kullanıcı için erişim belirtecini almakta kullanılır; bu belirteç daha sonra başlatmak için kullanılır. IGmailClient.
Ekle, Al ve Güncelle
Takvim eklemek için, bir Calendar tip nesnesi ve bunu şu şekilde ekleyin: createCalendar fonksiyon. createCalendar yeni eklenen takvimin kimliğini döndürür. Bu kimlik, takvimi sunucudan almak için kullanılabilir. Aşağıdaki kod parçacığı, takvimi ekleme, alma ve güncelleme yöntemini gösterir.
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);
}
Belirli Takvimi Sil
Belirli bir takvimi silmek için, bir müşterinin tüm takvimlerini almalı ve ardından gerektiği gibi silmeliyiz. listCalendars şunların listesini döndürür: ExtendedCalendar Gmail takvimlerini içerir. Aşağıdaki kod parçacığı, belirli bir takvimi nasıl sileceğinizi gösterir.
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());
}
}
Takvim Erişim Kontrolüyle Çalışma
Aspose.Email, takvim öğeleri üzerindeki erişim kontrolü üzerinde tam kontrol sağlar. listAccessRules fonksiyonu şunlar tarafından sunulur: IGmailClient liste döndüren AccessControlRule. Tekil kural bilgileri, bir müşterinin takvimi için alınabilir, değiştirilebilir ve geri kaydedilebilir. IGmailClient erişim kontrol kurallarını yönetmek için aşağıdaki işlevleri içerir.
- listAccessRules Bu işlev, şunların listesini sağlar: AccessControlRule
- createAccessRule Bu işlev, bir takvim için yeni bir erişim kuralı oluşturur.
- updateAccessRule Bu işlev, bir erişim kuralını güncellemek için kullanılır.
- fetchAccessRule Bir müşterinin takvimi için belirli bir erişim kuralını getirmek amacıyla kullanılabilir.
- deleteAccessRule Bu işlev, bir erişim kuralını silmek için kullanılır.
Aşağıdaki kod parçacığı, erişim kurallarını yönetmek için kullanılan işlevlerin nasıl kullanılacağını gösterir:
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;
}
}
İstemci Ayarları ve Renk Bilgisiyle Çalışma
Aspose.Email, istemci ayarlarına şunları kullanarak erişimi destekler: IGmailClient.getSettings. Aşağıda verilen ayarların listesini döndürür:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
Benzer şekilde, istemciler için renk bilgisi şu şekilde de alınabilir: IGmailClient.getColors. Bu renk bilgisi nesnesi, Ön plan renkleri, arka plan renkleri ve güncelleme tarih ve saatinin listesini döndürür.
İstemci Ayarlarına Erişim
Aşağıdaki kod parçacığı, istemci ayarlarına erişmek için kullanılan işlevlerin nasıl kullanılacağını gösterir:
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");
}
}
}
Renk Bilgisine Erişim
Aşağıdaki kod parçacığı, istemci renk ayarlarına erişmek için kullanılan işlevlerin nasıl kullanılacağını gösterir.
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());
}
Randevularla Çalışma
Aspose.Email, şu konularda özellikler sunar: Randevular Google takvimlerinde. Aşağıda, Google takvimindeki randevular üzerinde gerçekleştirilebilecek görevlerin listesi bulunmaktadır:
- Randevu Ekle - createAppointment, importAppointment
- Randevu listesini al - listAppointments
- Belirli bir randevuyu al - fetchAppointment, listAppointmentInstances
- Bir randevuyu güncelle - updateAppointment
- Randevuyu bir takvimden diğerine taşı - moveAppointment
- Randevu Sil - deleteAppointment
Randevu Ekleme
Aşağıdaki kod örneği bir takvime randevu ekleme özelliğini gösterir. Bu örnekte aşağıdaki adımlar izlenir:
- Takvim oluştur ve ekle.
- Yeni bir takvimden randevu listesini al.
- Randevu oluştur.
- Randevu ekle.
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);
}
}
Randevu Al ve Güncelle
Takvim alımı ve güncellemesi aşağıdaki gibi gösterilmektedir:
- Belirli bir randevuyu al.
- Randevuyu değiştir.
- Takvimdeki randevuyu güncelle.
"calendarId" kimliğine sahip bir takvim ve "AppointmentUniqueId" benzersiz kimliğine sahip bir randevuun zaten çıkarıldığı varsayılmıştır. Aşağıdaki kod parçacığı randevuyu nasıl alacağınızı ve güncelleyeceğinizi gösterir.
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);
}
Randevu Taşıma ve Silme
Appointment Kaynak takvim, hedef takvim ve kaynak takvimdeki randevu benzersiz kimliğini sağlayarak taşınabilir. Aşağıdaki kod parçacığı randevunun nasıl taşınacağını ve silineceğini gösterir.
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);
}