通过WebServices从Sharepoint日历展开重复事件?

all*_*aws 4 sharepoint web-services

是否可以使用通过Lists.aspx公开的Web服务从Sharepoint的日历中获取事件列表(扩展重复事件)?

如果您使用C#或VB,这显然是可能的,如此处所述,使用如下代码段:

SPQuery query = new SPQuery();
query.ExpandRecurrence = true;
query.Query = "<Where><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Month /></Value></DateRangesOverlap></Where>";
Run Code Online (Sandbox Code Playgroud)

我试图通过使用此查询的cURL使用纯XML执行相同的操作:

<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>{my guid goes here}</listName>
<query>
    <Query xmlns="">
    <Where>
    <DateRangesOverlap>
      <FieldRef Name="EventDate" />
      <FieldRef Name="EndDate" />
      <FieldRef Name="RecurrenceID" />
      <Value Type="DateTime"><Month/></Value>
   </DateRangesOverlap>
    </Where>
    </Query>
</query>
<queryOptions>
    <QueryOptions>
    <ExpandRecurrence>TRUE</ExpandRecurrence>
    </QueryOptions>
</queryOptions>
Run Code Online (Sandbox Code Playgroud)

这种方式有效 - 它获取所有列表项,但不会扩展重复项.关键似乎是ExpandRecurrence属性.令人惊讶的是,除了几篇博文之外,谷歌似乎没有太多话要说.在网上搜索,我已经阅读了一些注释,表明ExpandRecurrence属性不起作用,但是其他人说它工作正常,我读过的任何内容都没有让我感到震惊.

有没有人试过这个并且在没有使用C#或VB的情况下让它工作 - 只是直接的XML?

小智 5

最后使其正常工作并返回SharePoint日历上的所有重复事件.这是Web服务查询的XML:

<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>
<listName>{your GUID goes here}</listName>
<query>
 <Query>
  <Where>
   <DateRangesOverlap>
    <FieldRef Name=\"EventDate\" />
    <FieldRef Name=\"EndDate\" />
    <FieldRef Name=\"RecurrenceID\" />
    <Value Type='DateTime'><Year/></Value>
   </DateRangesOverlap>
  </Where>
 </Query>
</query>
<queryOptions>
 <QueryOptions>
  <ExpandRecurrence>TRUE</ExpandRecurrence>
 </QueryOptions>
</queryOptions>
</GetListItems>
Run Code Online (Sandbox Code Playgroud)

关键不仅是将ExpandRecurrence选项设置为true - 您还必须将DateRangeOverlap中的值包含在Year中.