Управление календарями 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(). Она возвращает список настроек, как указано ниже:
- dateFieldOrder
- displayAllTimezones
- hideInvitations
- format24HourTime
- defaultCalendarMode
- defaultEventLength
- locale
- remindOnRespondedEventsOnly
- alternateCalendar
- userLocation
- hideWeekends
- showDeclinedEvents
- weekStart
- weather
- customCalendarMode
- timezoneLabel
- timezone
- useKeyboardShortcuts
- country
Аналогично информацию о цвете для клиентов можно получить, используя IGmailClient.GetColors(). Этот объект информации о цвете возвращает список цветов переднего плана, цветов фона и дату и время обновления.
Доступ к настройкам клиента
Следующий фрагмент кода показывает, как функции могут использоваться для доступа к настройкам клиента:
Доступ к информации о цветах
Следующий фрагмент кода показывает, как функции могут использоваться для доступа к настройкам цветов клиента.
Управление встречами Google Calendar
Aspose.Email предоставляет функции для работы с встречами в календарях Google. Ниже перечислены задачи, которые можно выполнять со встречами в календаре Google:
- Добавить встречи.
- Получить список встреч.
- Получить конкретную встречу.
- Обновить встречу.
- Переместить встречу из одного календаря в другой.
- Удалить встречу.
IGmailClient предоставляет функции такие как CreateAppointment, FetchAppointment, UpdateAppointment, ListAppointments, MoveAppointment и DeleteAppointment.
Добавление назначений в Google Calendar
Следующий пример кода демонстрирует возможность добавления назначения в календарь. Чтобы выполнить это, выполните шаги:
- Создать и вставить календарь.
- Получить список назначений из нового календаря.
- Создать встречу.
- Вставить назначение.
Получение и обновление встреч Google Calendar
Здесь демонстрируются получение и обновление календаря следующим образом:
- Получить конкретную встречу.
- Изменить встречу.
- Обновить встречу в календаре.
Предполагается, что календарь с идентификатором "calendarId" и уникальный идентификатор встречи "AppointmentUniqueId" уже получены. Ниже приведён фрагмент кода, показывающий, как получить и обновить встречу.
Перемещение и удаление встреч в Google Calendar
Встречу можно переместить, указав исходный календарь, целевой календарь и уникальный идентификатор встречи в исходном календаре. Ниже приведён фрагмент кода, показывающий, как переместить и удалить встречу.
Запрос FreeBusy для Google Calendar
Aspose.Email предоставляет механизм запросов для проверки, наступила ли встреча в соответствии с критериями. Для этой цели предоставляется класс FreebusyQuery, который позволяет подготовить запрос к конкретному календарю.
Этот пример кода демонстрирует возможность запросов к календарю. В этом примере выполняются следующие задачи:
- Создать и вставить календарь
- Создать встречу
- Вставить встречу
- Подготовить FreeBusyQuery
- Получить 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);
}
}