Outlook 2010: как получить список всех встреч, включая повторения - PullRequest
1 голос
/ 21 июня 2011

Я пытался перечислить все встречи в папке по умолчанию, например так:

Outlook.MAPIFolder calendarFolder = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
Outlook.Items outlookCalendarItems = calendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = true;

List<Outlook.AppointmentItem> lst = new List<Outlook.AppointmentItem>();

foreach (Outlook.AppointmentItem item in outlookCalendarItems)
{
    lst.Add(item);
}

Здесь перечислены все встречи, кроме повторяющихся, - только первое вхождение. Есть ли способ добавить все повторения в этот список?

Ответы [ 2 ]

0 голосов
/ 29 августа 2015

Если вы сортируете по времени начала , вы можете использовать свойство IncludeRecurrence для получения всех элементов встречи.Одно слово предостережения - если у вас есть повторяющиеся встречи, у которых нет конца, вы получите бесконечный цикл - так что будьте уверены и проверьте дату окончания.

См .: https://msdn.microsoft.com/en-us/library/bb220097(v=office.12).aspx

0 голосов
/ 21 июня 2011

Попробуйте использовать метод AppointmentItem.GetRecurrancePattern (и тип RecurrencePattern) для элемента встречи, после чего вы можете выполнить итерации по ним.

Примером получения одного экземпляра может быть , найденный здесь :

private void CheckOccurrenceExample()
{
    Outlook.AppointmentItem appt = Application.Session.
        GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).
        Items.Find(
        "[Subject]='Recurring Appointment DaysOfWeekMask Example'")
        as Outlook.AppointmentItem;
    if (appt != null)
    {
        try
        {
            Outlook.RecurrencePattern pattern =
                appt.GetRecurrencePattern();
            Outlook.AppointmentItem singleAppt =
                pattern.GetOccurrence(DateTime.Parse(
                "7/21/2006 2:00 PM"))
                as Outlook.AppointmentItem;
            if (singleAppt != null)
            {
                Debug.WriteLine("7/21/2006 2:00 PM occurrence found.");
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...