C# GetUserAvailabilityResults在Exchange web服务中显示工作时间以外的结果
GetUserAvailabilityResults显示Exchange web服务工作时间以外的结果,尽管我已将每日非工作时间建议的最大值设置为=0 另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability返回nullC# GetUserAvailabilityResults在Exchange web服务中显示工作时间以外的结果,c#,calendar,exchangewebservices,exchange-server-2010,C#,Calendar,Exchangewebservices,Exchange Server 2010,GetUserAvailabilityResults显示Exchange web服务工作时间以外的结果,尽管我已将每日非工作时间建议的最大值设置为=0 另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability返回null private static void GetSuggestedMeetingTimes(ExchangeService service) { // Create a list of attendee
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@e.edu.sa",
AttendeeType = MeetingAttendeeType.Organizer
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "abc@e.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Good;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.Suggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[0].SmtpAddress);
Console.WriteLine();
//foreach (AttendeeAvailability aa in results.AttendeesAvailability)
//{
// //Console.WriteLine(aa.Result.Date);
// Console.WriteLine(aa.CalendarEvents.Count);
//}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}
private static void GetSuggestedMeetingTimes(ExchangeService服务)
{
//创建与会者列表。
列表与会者=新列表();
添加(新与会者信息()
{
SmtpAddress=”vrr@e.edu.sa",
AttendeType=MeetingAttendeType.Organizer
});
添加(新与会者信息()
{
SmtpAddress=”abc@e.edu.sa",
AttendeType=MeetingAttendeType。必填项
});
AvailabilityOptions meetingOptions=新的AvailabilityOptions();
meetingOptions.MeetingDuration=30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay=0;
meetingOptions.GoodSuggestionThreshold=49;
meetingOptions.MinimumSuggestionQuality=SuggestionQuality.Good;
meetingOptions.DetailedSuggestionsWindow=新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay=48;
//返回一组建议的会议时间。
GetUserAvailabilityResults results=service.GetUserAvailability(与会者,
新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2)),
可用性数据。建议,
会议选择);
//Console.WriteLine(results.AttendeesAvailability[0]。WorkingHours.EndTime);
//显示可用的会议时间。
Console.WriteLine(“对{0}和{1}的可用性”,与会者[0]。SmtpAddress,与会者[0]。SmtpAddress);
Console.WriteLine();
//foreach(结果中的AttendeesAvailability.AttendeesAvailability)
//{
////Console.WriteLine(aa.Result.Date);
//Console.WriteLine(aa.CalendarEvents.Count);
//}
foreach(结果中的建议。建议)
{
Console.WriteLine(建议日期);
Console.WriteLine();
foreach(TimeSuggestion TimeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine(“建议的会议时间:+timeSuggestion.MeetingTime”);
Console.WriteLine();
}
}
}
作为交换,为每个用户分别维护工作时间。每个用户都可以有自己的工作时间。(虽然对于一个组织中的员工来说这似乎不合理)
GetUserAvailabilityResults在工作时间之外提供建议,因为与会者的一个工作时间与另一个不同
您不能为用户设置工作时间(据我所知),但是每个用户都可以使用outlook更改工作时间
您可以使用results.AttendeesAvailability查看每位与会者的工作时间
results.AttendesAvailability如果AvailabilityData.FreeBus和dSuggestions而不是AvailabilityData.Suggestions,则不会给出null
使用
下面是修改后的代码
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "shomaail@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required,
ExcludeConflicts = false
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Excellent;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.FreeBusyAndSuggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[1].SmtpAddress);
Console.WriteLine();
foreach (AttendeeAvailability aa in results.AttendeesAvailability)
{
Console.WriteLine("=============================================");
Console.WriteLine(aa.Result.ToString());
Console.WriteLine(aa.ViewType.ToString());
Console.WriteLine(aa.CalendarEvents.Count);
Console.WriteLine(aa.WorkingHours.StartTime);
Console.WriteLine(aa.WorkingHours.EndTime);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek.Count);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[0]);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[aa.WorkingHours.DaysOfTheWeek.Count-1]);
foreach (DayOfTheWeek dow in aa.WorkingHours.DaysOfTheWeek)
{
Console.WriteLine(dow);
}
}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}
private static void GetSuggestedMeetingTimes(ExchangeService服务)
{
//创建与会者列表。
列表与会者=新列表();
添加(新与会者信息()
{
SmtpAddress=”shomaail@kfupm.edu.sa",
AttendeType=MeetingAttendeType。必填,
ExcludeConflicts=false
});
添加(新与会者信息()
{
SmtpAddress=”vrr@kfupm.edu.sa",
AttendeType=MeetingAttendeType。必填项
});
AvailabilityOptions meetingOptions=新的AvailabilityOptions();
meetingOptions.MeetingDuration=30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay=0;
meetingOptions.GoodSuggestionThreshold=49;
meetingOptions.MinimumSuggestionQuality=SuggestionQuality.优秀;
meetingOptions.DetailedSuggestionsWindow=新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay=48;
//返回一组建议的会议时间。
GetUserAvailabilityResults results=service.GetUserAvailability(与会者,
新的时间窗口(DateTime.Now,DateTime.Now.AddDays(2)),
AvailabilityData.FreeBus和建议,
会议选择);
//Console.WriteLine(results.AttendeesAvailability[0]。WorkingHours.EndTime);
//显示可用的会议时间。
Console.WriteLine(“对{0}和{1}的可用性”,与会者[0]。SmtpAddress,与会者[1]。SmtpAddress);
Console.WriteLine();
foreach(结果中的AttendeesAvailability.AttendeesAvailability)
{
Console.WriteLine(“================================================================”);
Console.WriteLine(aa.Result.ToString());
Console.WriteLine(aa.ViewType.ToString());
Console.WriteLine(aa.CalendarEvents.Count);
控制台。写入线(aa。工作时间。开始时间);
控制台。写入线(aa。工作时间。结束时间);
Console.WriteLine(aa.工作小时数.工作周数.计数);
Console.WriteLine(aa.工作时间.DaysOfTheWeek[0]);
控制台。写入线(aa.WorkingHo