Microsoft graph api 通过图形API处理OneNote页面内容

Microsoft graph api 通过图形API处理OneNote页面内容,microsoft-graph-api,onenote-api,Microsoft Graph Api,Onenote Api,通过graph api使用OneNote时,我遇到许多问题 我知道OneNote使用的不是纯html,他们需要将其前后转换为API。。。但这似乎不是一项那么复杂的任务 我正在处理内容中的标记,需要能够更新标记元素。这是好的,除了我有一个项目(p或li)标签列表,其中有缩进 已更新 如果我的onenote中有类似的项目 没有嵌入图像的权限。。。这里是链接 我点击GraphAPI,通过GraphAPI浏览器获得具有以下url的内容 得到- 返回的html如下所示(注意缩进不在那里) 第1项 第2

通过graph api使用OneNote时,我遇到许多问题

我知道OneNote使用的不是纯html,他们需要将其前后转换为API。。。但这似乎不是一项那么复杂的任务

我正在处理内容中的标记,需要能够更新标记元素。这是好的,除了我有一个项目(p或li)标签列表,其中有缩进

已更新

如果我的onenote中有类似的项目

没有嵌入图像的权限。。。这里是链接

我点击GraphAPI,通过GraphAPI浏览器获得具有以下url的内容

得到-

返回的html如下所示(注意缩进不在那里)


第1项

第2项

第2a项

第2b项

第3项

如果我对具有类似子项的项进行修补以设置id(将id保留在其中…将其转换为永久数据id),以便以后进行更新,甚至关闭标记:

PATCH - https://graph.microsoft.com/beta/users/myname/onenote/pages/0-c9861926a1e8080518ca3750afa63800!1-2B303C571455A20B!102505/content?includeIDs=true

[
  {
    'target':'p:{f115c5ea-0481-0f03-31aa-07b94321c323}{74}',
    'action':'replace',
    'content':'<p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{74}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2</p>'
  }
]
PATCH-https://graph.microsoft.com/beta/users/myname/onenote/pages/0-c9861926a1e8080518ca3750afa63800!1-2B303C571455A20B!102505/content?includeId=true
[
{
'target':'p:{f115c5ea-0481-0f03-31aa-07b94321c323}{74}',
“操作”:“替换”,
“内容”:“

第2项 } ]

将处理更新,然后将内容更新为:

图片如下:


第1项

第2a项

第2b项

第2项

第3项

嵌套的ul/ol项也会发生相同的情况。。。我还尝试替换整个列表而不是单个项目,但是api调用错误,没有附加信息。嵌套项目符号列表似乎也丢失了父项目符号

我尝试过对所有项目的所有更新进行批处理,一次一个,颠倒顺序

[
  {
    'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
    'action':'insert',
    'position':'before',
    'content':'<p data-id="test" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2</p>'
  }
]
有趣的是,如果我做了一个插入,那么文本缩进和顺序将被保留,但是没有删除/删除补丁来清除旧文本。。。e、 g

[
  {
    'target':'p:{56d579c0-1203-0224-0587-6fe03fb82539}{34}',
    'action':'insert',
    'position':'before',
    'content':'<p data-id="My_own_id" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 1</p>'
  },
  {
    'target':'p:{56d579c0-1203-0224-0587-6fe03fb82539}{34}',
    'action':'<tried replace or delete/remove hoping it was undocumented>',
    'content':'<tried blank or just a span>'
  }
]
[
{
'target':'p:{56d579c0-1203-0224-0587-6fe03fb82539}{34}',
“操作”:“插入”,
'位置':'之前',
“内容”:“第1项”
},
{
'target':'p:{56d579c0-1203-0224-0587-6fe03fb82539}{34}',
“行动”:“,
“内容”:”
}
]
其他问题包括

  • 丢失其显示网格线属性的表
  • 如果我更新页面上的任何文本,没有文本的标记不会返回,甚至消失
部分答案

以下是非项目清单问题的部分答案。。。感谢科迪为我指明了正确的方向

通过在现有元素之前插入my元素,它将保留顺序

[
  {
    'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
    'action':'insert',
    'position':'before',
    'content':'<p data-id="test" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2</p>'
  }
]
[
{
'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
“操作”:“插入”,
'位置':'之前',
“内容”:“第2项”
}
]
然后删除旧的一个与以下内容,它看起来保留格式。由于是空div,OneNote不会添加该元素

[
  {
    'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
    'action':'replace',
    'content':'<div></div>'
  }
]
[
{
'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
“操作”:“替换”,
“内容”:”
}
]

对于待办事项列表的具体问题,我可以确认缩进项上移并与正在更新的元素“分离”的问题。
用缩进更新列表的唯一可靠方法似乎是替换整个列表(表上也有类似的限制)。
在您的示例中,所有5个段落似乎都需要更新以保持对齐。
如果不起作用,尝试更换周围的div

 [
      {
        'target':'div:{9dfa7be6-2de0-b802-01ae-20c164255f9d}{30}',
        'action':'replace',
        'content':'<div><p data-tag="to-do">Item 1</p>
                   <div><p data-tag="to-do">Item 2</p>
                        <ul>
                           <p data-tag="to-do:completed">Item 2a</p>
                           <p data-tag="to-do:completed">Item 2b</p>
                       </ul>
                   <div><p data-tag="to-do">Item 3</p>
                   <div><p data-tag="to-do">Item 4</p>
                  </div>'
      }    
]
[
{
'target':'div:{9dfa7be6-2de0-b802-01ae-20c164255f9d}{30}',
“操作”:“替换”,
“内容”:“

第1项

第2项

    第2a项

    第2b项

第3项

第4项

' } ]
至于如何删除一个元素,下面应该可以

[{
      'target': 'p:{f5837c83-d816-4337-ab6d-a52abde869a6}{13}',
      'action': 'replace',
      'content': '<br/>'
    }]
[{
'target':'p:{f5837c83-d816-4337-ab6d-a52abde869a6}{13}',
“操作”:“替换”,
“内容”:“
” }]

当你得到一个清单时,这不会在列表中间工作。

[{
      'target': 'p:{f5837c83-d816-4337-ab6d-a52abde869a6}{13}',
      'action': 'replace',
      'content': '<br/>'
    }]