مدیریت تقویم‌های Google با استفاده از مشتری Gmail

افزودن، ویرایش و حذف تقویم‌های Gmail

Aspose.Email به برنامه‌ها اجازه می‌دهد تا تقویم‌های Gmail را با استفاده از مدیریت کنند IGmailClient که ویژگی‌هایی مانند افزودن، حذف و به‌روزرسانی تقویم‌های Gmail را فراهم می‌کند. این کلاس مشتری یک فهرست از اشیاء نوع ExtendedCalendar را برمی‌گرداند که حاوی اطلاعات موارد تقویم Gmail هستند. IGmailClient کلاس توابع زیر را برای تقویم‌ها ارائه می‌دهد:

  • CreateCalendar می‌تواند برای افزودن تقویم جدید استفاده شود
  • ListCalendars می‌توان از آن برای دریافت فهرست تمام تقویم‌های یک مشتری استفاده کرد
  • DeleteCalendar می‌تواند برای حذف یک تقویم استفاده شود
  • FetchCalendar می‌تواند برای دریافت تقویم خاص یک مشتری استفاده شود
  • UpdateCalendar این تابع برای وارد کردن مجدد یک تقویم اصلاح‌شده از یک مشتری استفاده می‌شود

برای دسترسی به تقویم‌ها، GoogleTestUser با اعتبارنامه‌های حساب gmail مقداردهی می‌شود. GoogleOAuthHelper برای دریافت توکن دسترسی کاربر استفاده می‌شود که سپس برای مقداردهی IGmailClient به کار می‌رود.

درج، دریافت و به‌روزرسانی تقویم‌های Gmail

برای افزودن یک تقویم، یک شیء از نوع Calendar را مقداردهی اولیه کنید و با استفاده از CreateCalendar() تابع. CreateCalendar() شناسه تقویم تازه وارد شده را برمی‌گرداند. این شناسه می‌تواند برای دریافت تقویم از سرور استفاده شود. قطعه کد زیر نشان می‌دهد چگونه تقویم را درج، دریافت و به‌روزرسانی کنید.

حذف تقویم‌های خاص Google

برای حذف یک تقویم خاص، باید فهرست تمام تقویم‌های یک مشتری را دریافت کنیم و سپس به‌صورت مورد نیاز حذف کنیم. ListCalendars() فهرست زیر را باز می‌گرداند ExtendedCalendar که شامل تقویم‌های Gmail است. قطعه کد زیر نشان می‌دهد چگونه تقویم خاصی را حذف کنید.

کنترل دسترسی تقویم

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(). این شیء اطلاعات رنگ فهرست رنگ‌های پیش‌زمینه، رنگ‌های پس‌زمینه و تاریخ و زمان به‌روزرسانی را باز می‌گرداند.

دستیابی به تنظیمات مشتری

قطعه کد زیر نشان می‌دهد چگونه می‌توان از توابع برای دسترسی به تنظیمات مشتری استفاده کرد:

دسترسی به اطلاعات رنگ

قطعه کد زیر نشان می‌دهد چگونه می‌توان از توابع برای دسترسی به تنظیمات رنگ مشتری استفاده کرد.

مدیریت قرار ملاقات‌های تقویم گوگل

Aspose.Email ویژگی‌هایی برای کار با قرار ملاقات‌ها در تقویم‌های گوگل فراهم می‌کند. وظایف زیر می‌توانند بر روی قرار ملاقات‌ها در تقویم گوگل انجام شوند:

  1. افزودن قرار ملاقات‌ها.
  2. دریافت فهرست قرار ملاقات‌ها.
  3. دریافت قرار ملاقات خاص.
  4. به‌روزرسانی یک تقویم.
  5. انتقال قرار ملاقات از یک تقویم به تقویم دیگر.
  6. حذف قرار ملاقات.

IGmailClient توابعی مانند CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment و DeleteAppointment.

افزودن قرارهای ملاقات به تقویم Google

نمونه کد زیر ویژگی افزودن یک قرار ملاقات به تقویم را نشان می‌دهد. برای انجام این کار، مراحل زیر را دنبال کنید:

  1. یک تقویم ایجاد و وارد کنید.
  2. بازیابی فهرست قرارهای ملاقات از یک تقویم جدید.
  3. یک قرار ملاقات ایجاد کنید.
  4. درج یک قرار ملاقات.

دریافت و به‌روزرسانی قرار ملاقات‌های تقویم گوگل

در اینجا بازیابی و به‌روزرسانی تقویم به‌صورت زیر نشان داده شده است:

  1. یک قرار ملاقات خاص را بازیابی کنید.
  2. قرار ملاقات را ویرایش کنید.
  3. قرار ملاقات را در تقویم به‌روز کنید.

فرض می‌شود که یک تقویم با شناسه "calendarId" و شناسه یکتا "AppointmentUniqueId" قبلاً استخراج شده‌اند. قطعه کد زیر نشان می‌دهد چگونه یک قرار ملاقات را بازیابی و به‌روزرسانی کنید.

انتقال و حذف قرار ملاقات‌ها در تقویم گوگل

قرار ملاقات می‌تواند با ارائه تقویم منبع، تقویم مقصد و شناسه یکتا در تقویم منبع جابه‌جا شود. قطعه کد زیر نشان می‌دهد چگونه یک قرار ملاقات را جابه‌جا و حذف کنید.

پرس‌وجوی FreeBusy برای تقویم گوگل

Aspose.Email مکانیزم پرس‌وجو برای بررسی اینکه آیا یک قرار ملاقات بر اساس معیارها موعد دارد یا نه را فراهم می‌کند. کلاس FreebusyQuery برای این منظور ارائه می‌شود که امکان تهیه پرس‌وجو برای یک تقویم خاص را می‌دهد.

این نمونه کد ویژگی پرس‌وجوی تقویم را نشان می‌دهد. وظایف زیر در این نمونه انجام می‌شود:

  1. ایجاد و درج یک تقویم
  2. ایجاد یک قرار ملاقات
  3. درج قرار ملاقات
  4. آماده‌سازی FreeBusyQuery
  5. دریافت FreebusyResponse
// 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);
    }
}