إدارة تقويمات 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(). تُعيد قائمة الإعدادات كما هو موضح أدناه:

  1. dateFieldOrder
  2. displayAllTimezones
  3. hideInvitations
  4. format24HourTime
  5. defaultCalendarMode
  6. defaultEventLength
  7. locale
  8. remindOnRespondedEventsOnly
  9. alternateCalendar
  10. userLocation
  11. hideWeekends
  12. showDeclinedEvents
  13. weekStart
  14. weather
  15. customCalendarMode
  16. timezoneLabel
  17. timezone
  18. useKeyboardShortcuts
  19. country

يمكن أيضًا استرجاع معلومات اللون للعميل باستخدام IGmailClient.GetColors(). يُعيد كائن معلومات اللون قائمة بألوان المقدمة، الألوان الخلفية وتاريخ ووقت التحديث.

الوصول إلى إعدادات العميل

يوضح مقطع الشيفرة التالي كيفية استخدام الدوال للوصول إلى إعدادات العميل:

الوصول إلى معلومات اللون

يوضح مقطع الشيفرة التالي كيفية استخدام الدوال للوصول إلى إعدادات ألوان العميل.

إدارة مواعيد تقويم Google

توفر Aspose.Email ميزات للعمل مع المواعيد في تقاويم Google. يمكن تنفيذ المهام التالية على المواعيد في تقويم Google:

  1. إضافة مواعيد.
  2. استرجاع قائمة بالمواعيد.
  3. استرجاع موعد معين.
  4. تحديث موعد.
  5. نقل الموعد من تقويم إلى آخر.
  6. حذف الموعد.

IGmailClient توفر وظائف مثل CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment و DeleteAppointment.

إضافة مواعيد إلى تقويم Google

يوضح مثال الشيفرة التالي ميزة إضافة موعد في تقويم. لتحقيق ذلك، اتبع الخطوات:

  1. إنشاء وإدراج تقويم.
  2. استرجاع قائمة المواعيد من تقويم جديد.
  3. إنشاء موعد.
  4. إدراج موعد.

استرجاع وتحديث مواعيد تقويم Google

هنا يتم توضيح استرجاع وتحديث التقويم كما يلي:

  1. استرجاع موعد معين.
  2. تعديل الموعد.
  3. تحديث الموعد في التقويم.

يفترض أن تقويمًا بمعرف "calendarId" ومعرف فريد للموعد "AppointmentUniqueId" قد تم استخراجهما بالفعل. يُظهر مقتطف الشيفرة التالي كيفية استرجاع موعد وتحديثه.

نقل وحذف المواعيد في تقويم Google

يمكن نقل الموعد بتوفير تقويم المصدر، تقويم الوجهة والمعرف الفريد للموعد في تقويم المصدر. يُظهر مقتطف الشيفرة التالي كيفية نقل وحذف موعد.

استعلام FreeBusy لتقويم Google

توفر Aspose.Email آلية استعلام للتحقق مما إذا كان الموعد مستحقًا أم لا وفقًا للمعايير. يتم توفير فئة FreebusyQuery لهذا الغرض والتي تسمح بإعداد استعلام لتقويم معين.

يوضح مثال الشيفرة هذا ميزة استعلام تقويم. يتم تنفيذ المهام التالية في هذا المثال:

  1. إنشاء وإدراج تقويم
  2. إنشاء موعد
  3. إدراج موعد
  4. تحضير استعلام FreeBusy
  5. احصل على استجابة 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);
    }
}