通过 Graph API 使用 OneNote 页面内容

2024-01-03

通过图形 API 使用 OneNote 时,我遇到了许多问题。

我知道 OneNote 使用的不是直接的 html,他们需要为 API 来回转换它......但这似乎不是那么复杂的任务。

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

UPDATED

如果我的onenote中有这样的项目

没有嵌入图片的权利...所以这是链接

我点击 graph api 通过 graph api explorer 获取具有以下 url 的内容

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

返回的 html 将如下所示(请注意,缩进不存在)

<body data-absolute-enabled="true" style="font-family:Calibri;font-size:11pt">
    <div id="div:{f115c5ea-0481-0f03-31aa-07b94321c323}{65}" style="position:absolute;left:264px;top:139px;width:624px">
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{67}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 1</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{74}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{71}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2a</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{73}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2b</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{76}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 3</p>
    </div>
</body>

如果我修补那些具有像这样的子项目的项目以设置 ids(将 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>'
  }
]

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

图片在这里:

<body data-absolute-enabled="true" style="font-family:Calibri;font-size:11pt">
    <div id="div:{f115c5ea-0481-0f03-31aa-07b94321c323}{65}" style="position:absolute;left:264px;top:139px;width:624px">
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{67}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 1</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{71}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2a</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{73}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 2b</p>
        <p id="p:{78cb2ca5-efec-4e6f-a763-12e9cac6a2b5}{2}" lang="en-US" data-tag="to-do" data-id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{74}" style="margin-top:0pt;margin-bottom:0pt">Item 2</p>
        <p id="p:{f115c5ea-0481-0f03-31aa-07b94321c323}{76}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Item 3</p>
    </div>
</body>

对于嵌套的 ul/ol 项目,本质上也是如此……我也尝试替换整个列表而不是单个项目,但 api 调用错误,没有任何附加信息。嵌套项目符号列表似乎也丢失了父项目符号。

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

有趣的是,如果我进行插入,则保留文本缩进和顺序,但没有删除/删除补丁来清除旧文本...例如

[
  {
    '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:{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>'
  }
]

然后用以下命令删除旧的,看起来会保留格式。由于它是一个空 div OneNote 不会添加该元素。

[
  {
    'target':'p:{20781e6d-ba99-4fca-9994-622720cad7f8}{249}',
    'action':'replace',
    'content':'<div></div>'
  }
]

表格边框的解决方案

使用表格时使用border属性而不是style.

API 返回一个表格,其边框为<table style="border:1px solid;border-collapse:collapse">...</table>. Use table.style.border查找是否有边框(可以是 1px 或 0px)。设置表格使用的边框border属性:<table border="1">...</table>.

The border属性为td将被忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Graph API 使用 OneNote 页面内容 的相关文章

随机推荐

  • git 过滤器分支到 git 过滤器存储库转换

    我按照此命令对 git 存储库中的所有提交执行更漂亮的操作 git filter branch tree filter prettier write js echo Error formatting possibly invalid JS
  • Python:在祖父母目录中导入文件

    等级制度 scripts web script1 py tests script2 py common utils py 我如何在 script1 和 script2 中导入 utils 并且仍然能够单独运行这些脚本 即 python sc
  • 使用 JPA 解析简单查询时出现语法错误

    我使用 netbeans 向导创建了实体 bean 并尝试从数据库获取数据 无论我使用什么 SQL 查询 它都不起作用 我尝试使用由向导创建的命名查询 NamedQuery name Usr findAll query SELECT u F
  • 导入不带行分隔符的固定宽度数据文件

    我有没有行分隔符的固定宽度数据文件 dbf 该数据文件的两行如下所示 20141101 77h 3 210 0 3 20141102 76h 3 090 0 3 一条线的宽度是c 8 4 7 41 对于日期 8 一些时间度量 4 数据点 7
  • 如何用C从字符串中删除前三个字符?

    如何用 C 删除字符串的前三个字母 指针加 3 char foo abcdef foo 3 printf s foo 将打印 def
  • 在应用程序中获取码头领域凭据

    这可能是一个愚蠢的问题 但我们在我们的服务器上使用码头基本身份验证 现在我们想在我们的应用程序中使用用户凭据 是否可以获取 RAP Web 应用程序中的当前登录信息 Thanks 我不是 RAP 专家 但看起来你想这样做 HttpServl
  • 如何在AChartEngine中设置CombinedXYChart的日期格式?

    我可以像这样设置时间表中的日期格式 final GraphicalView view ChartFactory getTimeChartView context dataset mRenderer dd MMM yyyy 但我不能在 Com
  • Spring服务默认作用域

    这是 a 的默认范围Spring 4 Service 设计一个有意义吗 Service实现存储有关当前登录用户的信息 根据当前HTTP会话 通过类属性 也可以通过使用final修饰符 Spring 4 Service 的默认范围是哪个 默认
  • C++11的long long真的至少是64位吗?

    It says 在维基百科上 en wikipedia org wiki C 11 Type long long int and 在 Stroustrup 的常见问题解答中 www stroustrup com C 11FAQ html l
  • Git 并在多个分支上工作

    我有几个 Git 分支 experimental something 和 master 我切换到 实验 分支 我注意到一个与 实验 无关的错误 属于 某事 中所做的更改 我应该如何修复它 我想我应该切换到 某事 修复错误 提交 然后回到 实
  • 显示磁盘大小和可用空间(以 GB 为单位)

    是否有一行代码可以以 GB 而不是 mb 为单位显示逻辑磁盘的可用大小和磁盘空间 我尝试做一些研究 但找不到一个衬垫 我确实尝试过将其除以 1GB 但这不起作用 我该如何实现这一点 gwmi win32 logicaldisk Format
  • 检查 Python FTP 连接

    我有一个 FTP 连接 可以从中下载许多文件并在其间进行处理 我希望能够检查我的 FTP 连接在这期间没有超时 所以代码看起来像这样 conn FTP host blah conn connect for item in list of i
  • 如果验证失败如何停止表单提交[重复]

    这个问题在这里已经有答案了 更新 我的问题更多是关于How to prevent the form submit if the validation fails 该链接不能解决我的问题 只是重申我正在做的事情 我有一个带有一堆输入字段的表单
  • Android L 中应用程序内容位于导航栏后面

    正如你所看到的 我的 知道了 按钮位于导航栏后面 无法修复它 我努力了
  • Java字节码注入

    我正在尝试理解这个概念 我的问题是 从性能角度来看 此操作的成本是否昂贵 如果是 为什么 如果我试图通过在调用方法后注入一些代码来拦截传递给该方法的某些参数 那么这种注入是发生一次还是每次调用该方法时都会发生 该注入代码驻留在哪里 在应用程
  • 如何从 WSGI 应用程序返回内存中的 PIL 图像

    我读过很多类似的帖子this one https stackoverflow com questions 1001068 creating dynamic images with wsgi no files involved详细介绍了如何使
  • 使用 Nokogiri 我收到错误“initialize”:getaddrinfo:没有这样的主机已知。(SocketError)”

    我编写了下面的代码 只是为了启动 Nokogiri 来满足要求 当我运行它进行测试时出现错误 D WIPData Ruby Scripts gt Nokogiri rb C Ruby193 lib ruby 1 9 1 net http r
  • 分布式 Celery 调度程序

    我正在寻找一个类似于 Python 的分布式 cron 框架 并找到了 Celery 然而 文档说 你必须确保一次只有一个调度程序针对一个计划运行 否则你最终会得到重复的任务 Celery 使用 celery beat Persistent
  • 将数据从数据库插入到另一个数据库

    我想将旧数据库表中的值转移到新数据库表中 旧数据库结构 表一 Country 国家 地区 ID 国家的名字 新的数据库结构 表二 Countries Id Name 我使用了以下插入查询 例如 select insert into Coun
  • 通过 Graph API 使用 OneNote 页面内容

    通过图形 API 使用 OneNote 时 我遇到了许多问题 我知道 OneNote 使用的不是直接的 html 他们需要为 API 来回转换它 但这似乎不是那么复杂的任务 我正在处理内容中的标签 并且需要能够更新标签元素 除了我有一个有缩