You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Graph API无法获取SharePoint全部站点页面问题求助

解决Microsoft Graph API获取SharePoint页面不全及404问题

以下是针对你遇到的问题的排查方向和解决办法:

1. 页面类型不匹配:Graph仅返回现代站点页面

Microsoft Graph的/sites/{site-id}/pages/microsoft.graph.sitePage端点仅返回使用「Site Page」内容类型创建的现代页面,而PnP PowerShell的Get-PnPPage默认会覆盖更多页面类型(比如经典Web Part页面、Wiki页面等)。

验证方法

用PnP PowerShell检查「Project Home.aspx」的内容类型:

Get-PnPPage -Identity "Project Home.aspx" | Select-Object Name, ContentType

如果输出的ContentType不是「Site Page」,说明该页面不属于Graph的sitePage端点覆盖范围。

解决办法

要获取这类非现代站点页面,直接调用SharePoint列表项端点(页面本质存储在「Pages」文档库中):

GET https://graph.microsoft.com/v1.0/sites/<site-id>/lists/Pages/items?$filter=File/Name eq 'Project Home.aspx'&$select=id,Name,webUrl

2. 页面处于草稿状态,Graph默认不返回

Graph API的sitePage端点默认只返回已发布的页面,若「Project Home.aspx」是草稿状态,会被自动过滤。

验证方法

用PnP PowerShell检查页面发布状态:

Get-PnPPage -Identity "Project Home.aspx" | Select-Object Name, Published

如果Published值为False,说明页面是草稿状态。

解决办法

在Graph请求中添加includeDraftItems=true参数,即可返回草稿页面:

GET https://graph.microsoft.com/v1.0/sites/<site-id>/pages/microsoft.graph.sitePage?$select=name,id&includeDraftItems=true

3. ID格式不匹配导致404

PnP返回的UniqueId是页面对应列表项的GUID,而Graph的sitePage的id是独立的标识符(格式与列表项ID不同)。直接用PnP的UniqueId调用Graph的页面端点会触发404错误。

解决办法

  • 方法1:用文件名过滤Graph请求,获取正确的页面ID:
    GET https://graph.microsoft.com/v1.0/sites/<site-id>/pages/microsoft.graph.sitePage?$filter=name eq 'Project Home.aspx'&$select=id,name
    
  • 方法2:如果是现代页面之外的类型,直接用列表项端点获取详情:
    GET https://graph.microsoft.com/v1.0/sites/<site-id>/lists/Pages/items/{list-item-id}?$expand=File,Fields
    

内容的提问来源于stack exchange,提问作者robhogg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:04:58