使用REST API从SharePoint日历检索事件

使用REST API从SharePoint日历检索事件,rest,sharepoint,calendar,Rest,Sharepoint,Calendar,我有一个rest端点,用于从工作时的内部网络访问sharepoint日历。看起来是这样的: .{COMPANY}.com/sites/{SITE_URI}/_api/Web/list/getbytitle({TITLE-OF-CALENDAR})/items 当我向上面的url发出授权GET请求时,它会给我一个日历中4个事件的列表,但是日期是随机的。为了检索当前月份的所有事件,我需要指定什么端点 另外,我猜我每个请求只得到4个事件的原因是因为我没有处理一些分页的事情。。。如果您知道如何在一个请求

我有一个rest端点,用于从工作时的内部网络访问sharepoint日历。看起来是这样的: .{COMPANY}.com/sites/{SITE_URI}/_api/Web/list/getbytitle({TITLE-OF-CALENDAR})/items

当我向上面的url发出授权GET请求时,它会给我一个日历中4个事件的列表,但是日期是随机的。为了检索当前月份的所有事件,我需要指定什么端点

另外,我猜我每个请求只得到4个事件的原因是因为我没有处理一些分页的事情。。。如果您知道如何在一个请求中检索所有事件,那将是一个额外的好处


提前谢谢

可以通过以下CAML查询检索当前月份的事件:

<Where>
   <DateRangesOverlap>
      <FieldRef Name='EventDate' />
      <FieldRef Name='EndDate' />
      <Value Type='DateTime'>
          <Month />
      </Value>
   </DateRangesOverlap>
</Where>
在哪里

函数getListItems(webUrl、listTitle、queryText) { var viewXml=''+queryText+''; var url=webUrl+“/”api/web/lists/getbytitle(“+listitle+”)/getitems“; 变量queryPayload={ “查询”:{ “_元数据”:{“类型”:“SP.CamlQuery”}, “ViewXml”:ViewXml } }; 返回$.ajax({ url:url, 方法:“张贴”, 数据:JSON.stringify(queryPayload), 标题:{ “X-RequestDigest”:$(“#u-RequestDigest”).val(), “接受”:“application/json;odata=verbose”, “内容类型”:“应用程序/json;odata=verbose” } }); } 但是,这种方法有一个限制,REST和CSOM/JSOM API都不支持扩展周期性事件(这意味着周期性事件只返回单个事件项)。有关更多详细信息,请参阅这些请求:

在这种情况下,传统的SharePoint Web服务尤其起到了拯救作用

以下示例演示如何检索当前月份的事件并展开定期事件(此处使用):

$().SPServices({
操作:“GetListItems”,
async:false,
列表名:“TeamCal”,
CAMLViewFields:“+
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"",
CAMLQuery:“+
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"",
CAMLQueryOptions:“+
“v3”+
“对”+
"",
completefunc:函数(扩展数据、状态){
$(扩展数据.responseXML).SPFilterNode(“z:row”).each(函数(){
var$node=$(这个);
var eventTitle=$node.attr(“ows_Title”);
console.log(eventTitle);
});
}
})

感谢您的详细回复!我可以通过查看您发送的api链接和详细示例在代码中创建解决方案。在我的用例中,可能的重复事件问题似乎不是一个问题。
var query = `
<Where>
   <DateRangesOverlap>
      <FieldRef Name='EventDate' />
      <FieldRef Name='EndDate' />
      <Value Type='DateTime'>
          <Month />
      </Value>
   </DateRangesOverlap>
</Where>`


getListItems(_spPageContextInfo.webAbsoluteUrl,'TeamCalendar',query)
.done(function(data){
     var items = data.d.results;
     for(var i = 0; i < items.length;i++) {
         console.log(items[i].Title);
     }    
})
.fail(function(error){
    console.log(JSON.stringify(error));
});
function getListItems(webUrl,listTitle, queryText) 
{
    var viewXml = '<View><Query>' + queryText + '</Query></View>';
    var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems"; 
    var queryPayload = {  
               'query' : {
                      '__metadata': { 'type': 'SP.CamlQuery' }, 
                      'ViewXml' : viewXml  
               }
    };
    return $.ajax({
           url: url,
           method: "POST",
           data: JSON.stringify(queryPayload),
           headers: {
              "X-RequestDigest": $("#__REQUESTDIGEST").val(),
              "Accept": "application/json; odata=verbose",
              "content-type": "application/json; odata=verbose"
           }
     });
}
$().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "TeamCal",
    CAMLViewFields: "<ViewFields>" +
            "<FieldRef Name='Title' />" +
            "<FieldRef Name='EventDate' />" +
            "<FieldRef Name='EndDate' />" +
            "<FieldRef Name='Location' />" +
            "<FieldRef Name='Description' />" +
            "<FieldRef Name='fRecurrence' />" +
            "<FieldRef Name='RecurrenceData' />" +
            "<FieldRef Name='fAllDayEvent' />" +
        "</ViewFields>",
    CAMLQuery: "<Query>" +
            "<Where>" +
                "<DateRangesOverlap>" +
                    "<FieldRef Name='EventDate' />" +
                    "<FieldRef Name='EndDate' />" +
                    "<FieldRef Name='RecurrenceID' />" +
                    "<Value Type='DateTime'>" +
                        "<Month />" +
                    "</Value>" +
                "</DateRangesOverlap>" +
            "</Where>" +
            "<OrderBy>" +
                "<FieldRef Name='EventDate' />" +
            "</OrderBy>" +
        "</Query>",
    CAMLQueryOptions: "<QueryOptions>" +
            "<RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>" +
            "<ExpandRecurrence>TRUE</ExpandRecurrence>" +
        "</QueryOptions>",
    completefunc: function (xData, Status) {
        $(xData.responseXML).SPFilterNode("z:row").each(function() {

            var $node = $(this);
            var eventTitle = $node.attr("ows_Title");
            console.log(eventTitle);

        });
    }
})