إدارة تقويمات Google باستخدام عميل Gmail
إضافة، تعديل وحذف تقويمات Gmail
تسمح Aspose.Email للتطبيقات بإدارة تقاويم جيميل باستخدام IGmailClient التي توفر ميزات مثل الإضافة، الحذف وتحديث تقويمات Gmail. تُعيد هذه الفئة القائمة من كائنات من النوع ExtendedCalendar التي تحتوي على معلومات حول عناصر تقويم Gmail. IGmailClient الفئة تعرض الدوال التالية للتقويمات:
- CreateCalendar يمكن استخدامها لإدراج تقويم جديد
- ListCalendars يمكن استخدامها للحصول على قائمة بجميع تقويمات عميل
- DeleteCalendar يمكن استخدامها لحذف تقويم
- FetchCalendar يمكن استخدامها لاسترجاع تقويم معين للعميل
- UpdateCalendar تُستخدم هذه الدالة لإعادة إدراج تقويم مُعدَّل لعميل
للوصول إلى التقويمات، يتم تهيئة GoogleTestUser باستخدام بيانات اعتماد حساب Gmail. يُستخدم GoogleOAuthHelper للحصول على رمز الوصول للمستخدم الذي يُستَخدم بعد ذلك لتهيئة IGmailClient.
إدراج، استرجاع وتحديث تقويمات Gmail
لإدراج تقويم، قم بتهيئة كائن من النوع Calendar وأدرجه باستخدام CreateCalendar() دالة. CreateCalendar() يعيد معرّف التقويم الذي تم إدراجه حديثًا. يمكن استخدام هذا المعرف لاسترجاع التقويم من الخادم. يوضح المقتطف البرمجي التالي كيفية إدراج، استرجاع وتحديث التقويم.
حذف تقويمات Google محددة
لحذف تقويم معين، نحتاج إلى الحصول على قائمة بجميع تقاويم العميل ثم حذف المطلوب. ListCalendars() يعيد قائمة بـ ExtendedCalendar التي تحتوي على تقاويم جيميل. يوضح المقتطف البرمجي التالي كيفية حذف تقويم معين.
التحكم في وصول التقويم
يوفر Aspose.Email تحكمًا كاملاً في الوصول إلى عناصر التقويم. ListAccessRules() الدالة مكشوفة بواسطة IGmailClient التي تُعيد قائمة الـ AccessControlRule. يمكن استرجاع معلومات القاعدة الفردية، تعديلها وحفظها مرة أخرى لتقويم العميل. IGmailClient تحتوي على الدوال التالية لإدارة قواعد التحكم في الوصول.
- ListAccessRules توفر هذه الدالة قائمة AccessControlRule
- CreateAccessRule تُنشئ هذه الدالة قاعدة وصول جديدة لتقويم.
- UpdateAccessRule تُستخدم هذه الدالة لتحديث قاعدة وصول.
- FetchAccessRule يمكن استخدامها لاسترجاع قاعدة وصول معينة لتقويم العميل.
- DeleteAccessRule تُستخدم هذه الدالة لحذف قاعدة الوصول.
يوضح مقطع الشيفرة التالي كيفية استخدام الدوال لإدارة قواعد الوصول:
إعدادات عميل التقويم ومعلومات الألوان
تدعم 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(). يُعيد كائن معلومات اللون قائمة بألوان المقدمة، الألوان الخلفية وتاريخ ووقت التحديث.
الوصول إلى إعدادات العميل
يوضح مقطع الشيفرة التالي كيفية استخدام الدوال للوصول إلى إعدادات العميل:
الوصول إلى معلومات اللون
يوضح مقطع الشيفرة التالي كيفية استخدام الدوال للوصول إلى إعدادات ألوان العميل.
إدارة مواعيد تقويم Google
توفر Aspose.Email ميزات للعمل مع المواعيد في تقاويم Google. يمكن تنفيذ المهام التالية على المواعيد في تقويم Google:
- إضافة مواعيد.
- استرجاع قائمة بالمواعيد.
- استرجاع موعد معين.
- تحديث موعد.
- نقل الموعد من تقويم إلى آخر.
- حذف الموعد.
IGmailClient توفر وظائف مثل CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment و DeleteAppointment.
إضافة مواعيد إلى تقويم Google
يوضح مثال الشيفرة التالي ميزة إضافة موعد في تقويم. لتحقيق ذلك، اتبع الخطوات:
- إنشاء وإدراج تقويم.
- استرجاع قائمة المواعيد من تقويم جديد.
- إنشاء موعد.
- إدراج موعد.
استرجاع وتحديث مواعيد تقويم Google
هنا يتم توضيح استرجاع وتحديث التقويم كما يلي:
- استرجاع موعد معين.
- تعديل الموعد.
- تحديث الموعد في التقويم.
يفترض أن تقويمًا بمعرف "calendarId" ومعرف فريد للموعد "AppointmentUniqueId" قد تم استخراجهما بالفعل. يُظهر مقتطف الشيفرة التالي كيفية استرجاع موعد وتحديثه.
نقل وحذف المواعيد في تقويم Google
يمكن نقل الموعد بتوفير تقويم المصدر، تقويم الوجهة والمعرف الفريد للموعد في تقويم المصدر. يُظهر مقتطف الشيفرة التالي كيفية نقل وحذف موعد.
استعلام FreeBusy لتقويم Google
توفر Aspose.Email آلية استعلام للتحقق مما إذا كان الموعد مستحقًا أم لا وفقًا للمعايير. يتم توفير فئة FreebusyQuery لهذا الغرض والتي تسمح بإعداد استعلام لتقويم معين.
يوضح مثال الشيفرة هذا ميزة استعلام تقويم. يتم تنفيذ المهام التالية في هذا المثال:
- إنشاء وإدراج تقويم
- إنشاء موعد
- إدراج موعد
- تحضير استعلام FreeBusy
- احصل على استجابة Freebusy
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Use the GoogleUser and GoogleOAuthHelper classes below to receive an access token
using (IGmailClient client = GmailClient.GetInstance(accessToken, user.Email))
{
// Initialize calendar item
Aspose.Email.Clients.Google.Calendar calendar1 = new Aspose.Email.Clients.Google.Calendar("summary - " + Guid.NewGuid().ToString(), null, null, "Europe/Kiev");
// Insert calendar and get back id of newly inserted calendar and Fetch the same calendar using calendar id
string id = client.CreateCalendar(calendar1);
Aspose.Email.Clients.Google.Calendar cal1 = client.FetchCalendar(id);
string calendarId1 = cal1.Id;
try
{
// Get list of appointments in newly inserted calendar. It should be zero
Appointment[] appointments = client.ListAppointments(calendarId1);
if (appointments.Length != 0)
{
Console.WriteLine("Wrong number of appointments");
return;
}
// Create a new appointment and Calculate appointment start and finish time
DateTime startDate = DateTime.Now;
DateTime endDate = startDate.AddHours(1);
// Create attendees list for appointment
MailAddressCollection attendees = new MailAddressCollection();
attendees.Add("user1@domain.com");
attendees.Add("user2@domain.com");
// Create appointment
Appointment app1 = new Appointment("Location - " + Guid.NewGuid().ToString(), startDate, endDate, "user2@domain.com", attendees);
app1.Summary = "Summary - " + Guid.NewGuid().ToString();
app1.Description = "Description - " + Guid.NewGuid().ToString();
app1.StartTimeZone = "Europe/Kiev";
app1.EndTimeZone = "Europe/Kiev";
// Insert the newly created appointment and get back the same in case of successful insertion
Appointment app2 = client.CreateAppointment(calendarId1, app1);
// Create Freebusy query by setting min/max timeand time zone
FreebusyQuery query = new FreebusyQuery();
query.TimeMin = DateTime.Now.AddDays(-1);
query.TimeMax = DateTime.Now.AddDays(1);
query.TimeZone = "Europe/Kiev";
// Set calendar item to search and Get the reponse of query containing
query.Items.Add(cal1.Id);
FreebusyResponse resp = client.GetFreebusyInfo(query);
// Delete the appointment
client.DeleteAppointment(calendarId1, app2.UniqueId);
}
finally
{
// Delete the calendar
client.DeleteCalendar(cal1.Id);
}
}