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

使用Graph API的Python请求追加OneNote页面内容遇用户ID问题

解决OneNote Graph API追加内容时的用户ID参数问题

先直接说问题所在和修正方案:

1. 端点URL先改错

你写的端点路径多了冗余的notebooks/,OneNote页面内容操作的正确端点应该是:
https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content
或者指定用户的格式:
https://graph.microsoft.com/v1.0/users/{user-id}/onenote/pages/{page-id}/content

2. {my_user_id}的正确取值

这里的`user-id不是应用ID、租户ID或密钥ID,只能是两种值:

  • 目标用户的对象ID(Object ID):去Azure AD的用户管理页面就能找到对应用户的这个ID;
  • 目标用户的邮箱地址(比如xxx@yourdomain.com);
    如果是操作当前授权用户的OneNote,直接用me代替{user-id}更省事,不需要特意找ID。

3. 修正后的代码示例

import requests

access_token = token["accessToken"]
# 用me指代当前授权用户,也可以替换成用户邮箱/对象ID
end_point = "https://graph.microsoft.com/v1.0/me/onenote/pages/{my_page_id}/content"
headers = {
    "Authorization": "Bearer " + access_token,
    "Content-Type": "application/json"
}

# 要追加到页面末尾的话,target设为"body"就行,不用找段落ID
data = {
    'target': "body",
    'action': 'append',
    'content': f'<li>{title}\n\n{description}</li>'
}

response = requests.patch(end_point, headers=headers, json=data)
# 建议打印响应信息排查问题
print(response.status_code)
print(response.text)

额外提醒

  • 确保你的access_token有Notes.ReadWrite权限;
  • 内容要符合OneNote的HTML规范,标签要闭合;
  • 如果非要指定段落ID,得保证这个ID是页面中真实存在的段落ID,不然会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:35:27