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

Microsoft Graph最近项接口如何获取OneNote笔记本显示名而非文件名

结论

/me/drive/recent接口目前不支持单请求直接返回OneNote笔记本的自定义displayName。你看到的office.com页面对OneNote项展示的自定义名称,是前端拿到基础文件列表后,对OneNote类型文件做了二次关联查询得到的,并非该接口直接返回的字段。

最简实现方案

不需要每次全量拉取所有OneNote笔记本列表做遍历匹配,利用接口返回结果里自带的关联ID做定向查询即可,性能开销极低:

  • 先遍历/me/drive/recent?top=6的返回结果,筛选出file.mimeType为application/msonenote的OneNote类型项
  • 从OneNote项的remoteItem.sharepointIds字段(个人盘非共享文件直接取根节点下的sharepointIds)提取两个关键关联值:siteId和listItemUniqueId
  • 用Graph的批量查询能力,针对每个筛出的OneNote项定向查询笔记本信息,查询路径为/sites/{siteId}/onenote/notebooks?$filter=id eq '{listItemUniqueId}',返回结果中的displayName就是需要的笔记本展示名称

避坑提示:不要用截取webUrl参数、匹配.one后缀文件名的方式做关联,这类方案会因为URL规则调整、文件重命名出现匹配错误,直接使用接口返回的结构化ID字段稳定性最高。

无效方案说明
  • 尝试在recent接口后拼接$expand=onenote、$expand=section类参数没有效果:当前drive/recent接口的返回模型没有绑定OneNote相关导航属性,即使加expand参数也不会返回笔记本的扩展信息
  • 每次请求全量拉取/me/onenote/notebooks列表做本地映射的方案性能很差:如果用户存储的笔记本数量较多,会拉取大量冗余数据,远不如按ID定向查询的效率高

对于仅拉取6个最近文件的场景,就算6个项全是OneNote文件,批量定向查询的额外耗时几乎可以忽略,这是目前官方能力范围内最简便的实现方式,不存在更短的原生单请求解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:27:34