如何从Microsoft Teams标签中获取OneNote笔记本/分区/页面ID
解决方案
前置校验
首先先确认你获取的Tab为OneNote官方嵌入标签,对比返回结构中teamsApp.id字段与OneNote官方Teams应用固定ID:08830273-8852-4185-83ec-b78eb48b9b03,一致即可按以下方法提取目标ID。
方法1:直接解析entityId字段(最高效)
OneNote嵌入Teams标签时,configuration.entityId字段为固定分隔格式,用|分隔不同层级的ID:
- 仅嵌入笔记本时格式为:
{笔记本ID}| - 嵌入分区时格式为:
{笔记本ID}|{分区ID}| - 嵌入单页时格式为:
{笔记本ID}|{分区ID}|{页面ID}
直接按分隔符拆分即可拿到对应ID,无需额外调用接口。
方法2:解析contentUrl/websiteUrl字段
如果entityId为空或格式异常,可从两个URL字段的查询参数中提取目标ID:
OneNote嵌入链接的固定参数规则为:
https://onenote.officeapps.live.com/xxx?notebookId={编码后的笔记本ID}§ionId={编码后的分区ID}&pageId={编码后的页面ID}
将对应参数值做URL解码后,即可获得可用的ID。
方法3:调用Graph API补全/验证信息
如果需要验证ID有效性,或补充获取更多OneNote资源信息,可调用对应接口:
- 如果你嵌入的是团队所属的OneNote(Teams团队对应Microsoft 365组,组ID=团队ID),调用:
GET /groups/{{团队ID}}/onenote/notebooks/{{解析得到的笔记本ID}} - 如果你嵌入的是个人OneNote,调用:
GET /me/onenote/notebooks/{{解析得到的笔记本ID}}
调用以上接口需要提前申请Notes.Read或Notes.ReadWrite、TeamsTab.Read.All接口权限。
内容的提问来源于stack exchange,提问作者Kannan
相关产品推荐
相关产品推荐

