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

如何通过SharePoint 2013 REST API获取页面当前正式版本标题

解决SharePoint REST API获取正式版本页面标题的问题

我完全懂你的困扰——当草稿和正式版本标题不一样时,要精准拿到已发布版本的标题确实容易踩坑。试试下面这两个可靠的方案:

方案1:通过Versions集合筛选正式版本并获取标题

直接针对文件的版本集合,筛选出正式(主)版本,再展开关联的列表项字段拿到标题。这个方法不需要提前知道版本号,更灵活:

获取所有正式版本的标题

_api/web/GetFileByServerRelativeUrl('/Pages/file1.aspx')/Versions?$filter=IsMajorVersion eq true&$select=VersionLabel,ListItemAllFields/Title&$expand=ListItemAllFields

获取最新的正式版本标题

如果只需要最新的已发布版本,加上排序和分页:

_api/web/GetFileByServerRelativeUrl('/Pages/file1.aspx')/Versions?$filter=IsMajorVersion eq true&$select=VersionLabel,ListItemAllFields/Title&$expand=ListItemAllFields&$orderby=Created desc&$top=1

这个请求里:

  • IsMajorVersion eq true:筛选出所有正式发布的版本(排除草稿的次要版本)
  • $expand=ListItemAllFields:展开版本对应的列表项数据,这样就能拿到该版本的Title
  • VersionLabel可以帮你确认当前拿到的是哪个版本(比如3.0这样的标识)

方案2:修正_vti_history路径的请求方式

你之前用_vti_history报错,大概率是路径或请求方式不对。SharePoint的版本历史文件夹里的数字是主版本号 × 512(比如主版本1对应512,主版本3对应1536),而且要确保路径包含完整的站点结构(如果是子站点的话)。

假设你的正式版本是3,站点根目录是/sites/YourSite,正确的请求应该是:

_api/web/GetFileByServerRelativeUrl('/sites/YourSite/_vti_history/1536/Pages/file1.aspx')/ListItemAllFields?$select=Title

注意:

  • 必须加上/ListItemAllFields?$select=Title,直接请求文件本身不会返回标题字段
  • 500错误可能是权限问题——确保当前账号有读取版本历史的权限,或者路径里的版本号对应不存在的版本(比如文件还没发布到3.0版本)

额外注意事项

  • 如果文件从未发布过(只有草稿),IsMajorVersion eq true会返回空结果,要提前处理这种情况
  • 避免直接用$filter=IsCurrentVersion eq true,因为这个属性标记的是最新版本(不管是草稿还是正式版),这就是你之前拿到草稿标题的原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:24:53