Exchange EWS, календарь FindItems против FindAppointments? - PullRequest
0 голосов
/ 23 мая 2018

Я следовал этому руководству, чтобы получить собрания в Exchange, сделанные через Outlook;https://msdn.microsoft.com/en-us/library/office/dn495614(v=exchg.150).aspx

Все работает отлично, без исключений, но не возвращает никаких результатов.Затем я попробовал FindItems вместо FindAppointments, и это действительно возвращает мои результаты.Почему FindAppointments не возвращают собрания?

Я создаю тестовые встречи в Outlook в Интернете.Нажимая «Меню»> «Календарь»> «Новый», я заполняю детали события, а затем добавляю участников перед сохранением.Они возвращаются FindItems (), но, похоже, нет свойства для извлечения списка Location и Attendee?Где FindAppointments даст мне свойства, которые мне нужны, если данные были возвращены.У меня ранее был установлен Outlook на компьютере, где при создании собрания было упомянуто слово «Встреча», где это похоже на элементы календаря.Я не уверен, в чем разница?

Моя конечная цель - когда пользователи планируют встречи через Outlook, и у меня будет приложение, которое извлекает сведения об этих встречах.список участников и местоположение.

Большое спасибо за любые указатели!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Удалось найти решение, взятое из этой нити

Код может быть полезен, но он корректно записывает встречи и позволяет мне получать данные, которые мне нужны.

FindItemsResults<Item> result = service.FindItems(WellKnownFolderName.Calendar, new CalendarView(DateTime.Now, DateTime.Now.AddDays(7)));
            foreach(Item item in result.Items)
            {
                ServiceResponseCollection<GetItemResponse> itemResponseCollection = service.BindToItems(new[] { new ItemId(item.Id.UniqueId) }, new PropertySet(BasePropertySet.FirstClassProperties));
                foreach(GetItemResponse itemResponse in itemResponseCollection)
                {
                    Appointment appointment = (Appointment)itemResponse.Item;
                    Console.WriteLine("Subject: " + appointment.Subject);
                    Console.WriteLine("Location: " + appointment.Location);

                    Console.WriteLine("AppointmentType: " + appointment.AppointmentType.ToString());
                    Console.WriteLine("Body: " + appointment.Body);
                    Console.WriteLine("End: " + appointment.End.ToString());
                    Console.WriteLine("UniqueId: " + appointment.Id.UniqueId);
                    Console.WriteLine("Start: " + appointment.Start.ToString());
                    Console.WriteLine("When: " + appointment.When);

                    Console.WriteLine("Required Attendees: ");
                    foreach (var attendee in appointment.RequiredAttendees)
                    {
                        Console.WriteLine(attendee.Name);
                    }
                }
0 голосов
/ 23 мая 2018

Нам нужно добавить список необходимых элементов в набор свойств, в данном примере набор свойств ограничен.В коде свойства

// Limit the properties returned to the appointment's subject, start time, and end time.
        cView.PropertySet = new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End);

вместо указанного выше, используйте приведенный ниже набор свойств, cView.PropertySet = new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End, AppointmentSchema.Location, AppointmentSchema.RequiredAttendees);

или лучшее для начального обучения -

// Limit the properties returned to the appointment's subject, start time, and end time.
        cView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...