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

如何通过Graph API动态生成SharePoint中OneNote页面深层链接?

解决方案:获取SharePoint共享OneNote笔记本分区页面的深层链接

能否通过OData参数动态生成?

不行。Graph API将SharePoint中的OneNote笔记本映射为Drive文件夹、分区映射为Drive文件时,这类DriveItem对象的OData参数里并不包含OneNote页面深层链接的生成逻辑,无法直接通过OData扩展或参数来动态生成目标链接。

可行方案

1. 调用OneNote专属Graph API端点直接获取

这是最可靠的方式,OneNote有独立的Graph API分支,能直接返回页面的深层链接:

  • 先获取目标站点下的所有OneNote笔记本:
    GET /sites/{site-id}/onenote/notebooks
    
  • 找到目标笔记本后,获取其下的分区:
    GET /sites/{site-id}/onenote/notebooks/{notebook-id}/sections
    
  • 再获取目标分区下的所有页面:
    GET /sites/{site-id}/onenote/notebooks/{notebook-id}/sections/{section-id}/pages
    

每个返回的页面对象里,links.oneNoteWebUrl字段就是直接可用的深层链接,点击可直接跳转至对应OneNote页面。

2. 通过DriveItem属性手动构造链接

如果已经通过Drive API拿到了笔记本(文件夹)和分区(文件)的id,可以结合SharePoint OneNote的网页链接格式手动构造:

  • 分区级链接格式:
    https://{tenant-domain}.sharepoint.com/sites/{site-name}/_layouts/OneNote.aspx?id={notebook-drive-item-id}&wd=target%28{section-name}%7B{section-drive-item-id}%7D%29
    
  • 页面级深层链接需要先通过OneNote API拿到页面的id,再构造:
    https://{tenant-domain}.sharepoint.com/sites/{site-name}/_layouts/OneNote.aspx?id={notebook-drive-item-id}&wd=target%28{section-name}%7B{section-id}%7D%2F{page-name}%7B{page-id}%7D%29
    

注意:构造时需要对特殊字符(如空格、括号)进行URL编码,避免链接失效。

3. 基于分区的webUrl添加锚点定位页面

分区对应的DriveItem会返回webUrl(打开该分区的OneNote链接),可以在这个链接后添加锚点参数定位到具体页面:

{section-web-url}#page-id={page-id}

这里的page-id需要从OneNote API的页面对象中获取,添加后即可直接跳转到目标页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:05:00