首页 > 解决方案 > 我可以使用 Microsoft Graph 访问 Sharepoint 日历吗?

问题描述

我需要从 SharePoint 上的共享日历中提取事件。

使用 Microsoft Graph 我找到了日历:

https://graph.microsoft.com/v1.0/sites/company.sharepoint.com/lists/CALENDAR_ID

其中包括一个列表数组。然后我尝试了:

https://graph.microsoft.com/v1.0/sites/company.sharepoint.com/lists/CALENDAR_ID/list

返回:

 [_decodedBody:Microsoft\Graph\Http\GraphResponse:private] => Array
    (
        [@odata.context] => https://graph.microsoft.com/v1.0/$metadata#sites('company.sharepoint.com')/lists('CALENDAR_ID')/list
        [contentTypesEnabled] => 1
        [hidden] => 
        [template] => events
    )

没有列出任何事件。我也尝试过/sites/{site-id}/lists/{list-id}/items,如Microsoft 的 API 参考文档中所示。这不显示事件。是否可以通过这种方式提取事件?

标签: sharepointoffice365microsoft-graph-api

解决方案


关于

没有列出任何事件。我还尝试过 /sites/{site-id}/lists/{list-id}/items,如 Microsoft 的 API 参考文档中所示。这不显示事件

由于每个日历都启用了项目级别权限,因此很可能会发生这种情况。

如何验证

  • 转到 SharePoint UI 中的日历设置: /_layouts/15/listedit.aspx?List={list-id}
  • under Advanced Settingsverify 是否Read items that were created by the user被选中

在此处输入图像描述

如果Read items that were created by the user选择了选项,那么端点将只返回当前用户https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items 创建的事件


为了返回所有事件,可以考虑以下选项:

1)通过将其设置为禁用每个日历的项目级权限Read all items

2) 或利用 SharePoint API 端点检索所有事件:https://server/_api/web/lists/getbyid('<list-id>')/items

根据用户权限,您可能需要启用Override List Behaviors权限级别

在此处输入图像描述

否则权限受限的用户将无法检索所有事件


推荐阅读