我的代码是一个MS Outlook插件,用于为团队中的60+人员创建缺勤日历。该公司使用MS Exchange。
我使用以下代码检索它们的忙/闲状态:
var namespace = ThisAddIn.thisOutlookApp?.GetNamespace( "MAPI" );
var recp = namespace.CreateRecipient( personName );
var freeBusy = recp.FreeBusy( startDate, MinPerChar: 60, CompleteFormat: true );尽管这个文件是有效的,但对FreeBusy()的一次调用大约需要300毫秒。对于60个人和三个月的时间跨度,这意味着我的代码几乎需要一分钟。
我也尝试了这个方法:
recp.Resolve();
var exu = recp.AddressEntry.GetExchangeUser();
var freeBusy = exu.GetFReeBusy(...)但没什么不同。VBA中的相同代码显示了相同的性能。
它们是加快呼叫速度的技巧,还是有其他方法来获取忙/闲信息,例如,通过访问其他人的日历或通过与MS Exchange服务器本身交谈?
发布于 2019-02-11 07:09:35
使用GetUserAvailability EWS操作-它允许在单个呼叫中为多个用户请求f/b信息。
发布于 2019-02-10 23:13:39
我自己找到了一个很好的解决方案:我没有使用Outlook Interop API,而是使用EWS托管API调用Exchange服务器本身。
有一套很棒的101 sample projects。(实际上是101个样本!)这是一个非常好的step-by-step tutorial,可以帮助您开始使用EWS Managed API。
"Exchange 2013以编程方式获取用户的状态设置“是我使用的示例。
然而,我热衷于听到来自SO用户的替代解决方案。
https://stackoverflow.com/questions/54614624
复制相似问题