Керуйте календарями 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(). Цей об’єкт інформації про колір повертає список кольорів переднього плану, кольорів фону та дату і час оновлення.

Доступ до налаштувань клієнта

Наведений нижче кодовий фрагмент показує, як можна використовувати функції для доступу до налаштувань клієнта:

Доступ до інформації про кольори

Наведений нижче кодовий фрагмент показує, як можна використовувати функції для доступу до налаштувань кольорів клієнта.

Керування зустрічами Google Calendar

Aspose.Email надає функції для роботи зі зустрічами в календарях Google. Наступні завдання можна виконати зі зустрічами в календарі Google:

  1. Додати зустрічі.
  2. Отримати список зустрічей.
  3. Отримати конкретну зустріч.
  4. Оновити зустріч.
  5. Перемістити зустріч з одного календаря в інший.
  6. Видалити зустріч.

IGmailClient надає функції, такі як CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment і DeleteAppointment.

Додати зустрічі до Google Calendar

Наведений нижче приклад коду демонструє можливість додавання зустрічі в календар. Щоб досягти цього, виконайте наступні кроки:

  1. Створити та вставити календар.
  2. Отримати список зустрічей з нового календаря.
  3. Створити подію.
  4. Вставити зустріч.

Отримання та оновлення зустрічей Google Calendar

Тут демонструються отримання та оновлення календаря наступним чином:

  1. Отримати конкретну подію.
  2. Змінити подію.
  3. Оновити подію в календарі.

Припускається, що календар з ідентифікатором "calendarId" та унікальним ідентифікатором зустрічі "AppointmentUniqueId" вже отримані. Нижченаведений фрагмент коду показує, як отримати та оновити зустріч.

Переміщення та видалення зустрічей у Google Calendar

Зустріч можна перемістити, вказавши вихідний календар, цільовий календар та унікальний ідентифікатор зустрічі у вихідному календарі. Нижченаведений фрагмент коду показує, як перемістити та видалити зустріч.

FreeBusy запит для Google Calendar

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);
    }
}