1

我想从特定日期的周期性主日历事件中检索事件 (ItemID)(我有发生日期和周期性主事件数据)。

我正在尝试 FindItem 有这样的限制

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
   <soapenv:Header>
      <typ:RequestServerVersion Version="Exchange2007_SP1"/>
   </soapenv:Header>
   <soapenv:Body>
      <mes:FindItem Traversal="Shallow">
         <mes:ItemShape>
            <typ:BaseShape>AllProperties</typ:BaseShape>
         </mes:ItemShape>
         <mes:Restriction>
            <typ:IsEqualTo>
               <typ:FieldURI FieldURI="item:RecurringMasterItemId"/>
               <typ:FieldURIOrConstant>
               <typ:Constant Value="AQMkAD[snip]AAAAA=="/>
               </typ:FieldURIOrConstant>
            </typ:IsEqualTo>
         </mes:Restriction>
         <mes:ParentFolderIds>
           <typ:DistinguishedFolderId Id="calendar"/>
         </mes:ParentFolderIds>
      </mes:FindItem>
   </soapenv:Body>
</soapenv:Envelope>

但这会返回:“FieldURI”属性无效-根据其数据类型(类型:UnindexedFieldURIType),值“item:RecurringMasterItemId”无效-枚举约束失败。
(我也知道定期约会的 ChangeKey 并尝试过,但同样的错误)

应该如何解决这个问题才能使其工作?

顺便提一句。我知道使用 GetItem 检索事件,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
   <soapenv:Header>
      <typ:RequestServerVersion Version="Exchange2007_SP1"/>
   </soapenv:Header>
   <soapenv:Body>
      <mes:GetItem>
         <mes:ItemShape>
            <typ:BaseShape>IdOnly</typ:BaseShape>
         </mes:ItemShape>
         <mes:ItemIds>
            <typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="1"/>
            <typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="2"/>
            <typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="3"/>
         </mes:ItemIds>
      </mes:GetItem>
   </soapenv:Body>
</soapenv:Envelope>

然后,我可以检索 StartDate 并遍历它们,但我无法预测可能适用的 InstanceIndex 范围。

在此先感谢,

4

1 回答 1

0

看起来这不可能。

我现在求助于使用 GetItem,一次检索 50 次。

这将返回一个 GetItemResponseMessages 列表,其中包含:

  • 成功的事件检索

  • ErrorCalendarOccurrenceIndexIsOutOfRecurrenceRange 响应代码指示我们已到达最后一次出现

  • 其他“真实”错误

  • ErrorCalendarOccurrenceIsDeletedFromRecurrence 响应代码,指示该事件已被删除

所以我只是循环直到找到正确的日期,达到 ErrorCalendarOccurrenceIndexIsOutOfRecurrenceRange,或者达到我的代码中设置的最大调用次数。

于 2013-01-14T15:50:02.393 回答