使用python的onenote API:向页面添加更多文本

问题描述

我正在尝试在知道引用此 https://docs.microsoft.com/en-us/graph/onenote-update-page页面 ID 的页面添加一些新文本

我只想添加一个新的文本框。似乎它只是 html 的另一个 div。你如何在正文中添加一个 div

我想插入一个新的文本框,上面写着“hello world”。

我已经尝试了该页面上的代码,它所做的只是添加到现有文本框。

我正在使用 python 请求。

解决方法

添加文本框

补丁https://graph.microsoft.com/v1.0/me/onenote/notebooks/pages/{page-id}/content

内容类型:应用程序/json 授权:承载{token}

[{'target':''div:{GUID}{int}','action':'append','content':'<div><p>hello world</p></div>'}]

这会创建一个新的文本框,但位于页面上选定的 div 内。重复这个过程似乎会添加到这个新创建的文本框而不是第二个文本框。

如果您想将文本框放置在页面上和单独的 div 中(据我所知),那么您需要捕获整个页面并用所有旧内容替换页面并添加类似关注

<div style="position:absolute;top:175px;left:100px"><p>Hello World in an absolute positioned div.</p></div>

您还需要将此添加到正文定义中

<body data-absolute-enabled="true">

,

在摆弄这个之后,我开始认为这是不可能的。理想情况下,人们希望插入一个兄弟 div(不是子项),但根据 supported elements and actions for updating OneNote pages 上的文档,不允许在顶级添加兄弟 div。不过,可以在另一个 div 中添加同级 div


我最初的幼稚尝试是使用 div 定位页面的第一个 "target": "body" 并使用 "action": "insert" 插入同级元素。但是,API 不允许这样做。

PATCH https://graph.microsoft.com/v1.0/me/onenote/pages/{id}/content

使用此请求正文:

[
  {
    "target": "body","action": "insert","content": "<div>I am in a new text box.</div>"
  }
]

有关 JSON 对象中的键和值的文档,请参阅 the attributes for JSON change objects

,

我认为您可能不需要添加新的“div”,但实际上,您只需要插入一个新段落,因为您说您只需要一个新的文本框。因此,请尝试以下代码并恢复反馈:

解决方案#1

headers={'Authorization': 'Bearer ' + token,'Content-Type': 'application/json' }
content_end_point='https://graph.microsoft.com/v1.0/me/onenote/notebooks/pages/{page-id}/content'

data= [{
    'target':'body','content':'<p>Hello World!</p>'
  }]

result=requests.patch(endpoint,headers=headers,json=data)
print(result.text)

解决方案#2

headers={'Authorization': 'Bearer ' + token,'content':'<div><p>Hello World!</p></div>'
  }]

result=requests.patch(endpoint,json=data)
print(result.text)