我正在使用Microsoft Graph API以编程方式将内容添加到Office365 OneNote Notebook上的OneNote页面上。对于这样的示例页面:
OneNote snip consisting of Title & 2 separate divs/blocks,这是我通过对pages/{myPageID}/content?includeids=true
端点进行
<html lang="en-US">
<head>
<title>Thursday, December 6, 2018</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="created" content="2018-12-06T19:55:00.0000000" />
</head>
<body data-absolute-enabled="true" style="font-family:Calibri;font-size:11pt">
<div id="div:{95790d05-168a-4f61-81a7-5c13e3124069}{4}" style="position:absolute;left:48px;top:115px;width:624px">
<p id="p:{95790d05-168a-4f61-81a7-5c13e3124069}{10}" style="margin-top:0pt;margin-bottom:0pt">It is a jolly good day</p>
</div>
<div id="div:{3a6b78e9-2af8-4a5b-abf8-09871fb6eec5}{20}" style="position:absolute;left:44px;top:180px;width:624px">
<p id="p:{3a6b78e9-2af8-4a5b-abf8-09871fb6eec5}{24}" style="margin-top:0pt;margin-bottom:0pt">Lets do this shall we</p>
</div>
</body>
</html>
我现在尝试通过使用Python中的PATCH
库创建以下requests
来添加新的div / block。 myPageID
和access_token
是通过向图形API发出GET
请求而预先收集的:
patchPageURL='https://graph.microsoft.com/v1.0/users/'+userID+'/onenote/pages/'+myPageID+'/content?includeIDs=true'
patchPageHeaders={
'Content-Type':'application/json',
'Authorization':'Bearer '+access_token
}
patchPageBody=[{
'target':'div:{3a6b78e9-2af8-4a5b-abf8-09871fb6eec5}{20}',
'action':'insert',
'position':'after',
'content':'<div><p> And God said let there be new blocks </p></div>'
}]
patchResp = requests.patch(patchPageURL, headers=patchPageHeaders, json=patchPageBody)
但是,我收到一个400
错误,作为对PATCH请求的响应,并带有以下代码和消息:
code: 20135
message: The entity type is not supported for this operation.
如果我将内容的开头div
更改为类似<div data-id="new-div">
的内容,我仍然会收到相同的400
错误,代码为20135
。
我正在遵循本文档here中的说明。在这里错过了什么精妙之处?没有身份验证或其他类似错误。如果我将target
更改为body
,将action
更改为append
,则PATCH可以正常工作,但这不会产生新的div / block,而仅将内容添加为页面中第一个div的子代。
是否有一种简单的方法来添加新块/ div作为现有块的同级,甚至只是像在OneNote页面末尾添加新块一样简单?