使用Microsoft Graph API在OneNote页面内添加新的div(内容块)

时间:2018-12-07 04:57:02

标签: microsoft-graph onenote-api

我正在使用Microsoft Graph API以编程方式将内容添加到Office365 OneNote Notebook上的OneNote页面上。对于这样的示例页面: OneNote snip consisting of Title & 2 separate divs/blocks,这是我通过对pages/{myPageID}/content?includeids=true端点进行

生成的HTML
<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。 myPageIDaccess_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页面末尾添加新块一样简单?

0 个答案:

没有答案