【问题标题】:Any way in OneNote API to extract link to another OneNote page?OneNote API 中有什么方法可以提取到另一个 OneNote 页面的链接吗?
【发布时间】:2016-03-26 02:45:34
【问题描述】:

如果我们在 HTML 内容中有指向另一个 OneNote 页面的链接:

<a href="onenote:SectionB.one#Note1&amp;section-id={<section-id>}&amp;page-id={<page-id>}&amp;end&amp;base-path=https://<path>"

...在我编写解析例程以提取该链接之前,我想我会问我是否忽略了 OneNote API 中的任何内容以简化此操作。

================================================ ==============================

[编辑] 好吧,我已经编写了我的例程来提取链接笔记的 page-id,但结果 page-id 与作为属性 (id) 返回的 page-id 完全不同链接的笔记本身 - 它不起作用:(

这是一个例子:

(1) 从链接中提取的页面 ID:A8CECE6F-6AD8-4680-9773-6C01E96C91D0

(2) page-id 作为注意属性:

0-5f49903893f048d0a3b1893ef004411f!1-240BD74C83900C17!124435

如您所见,完全不同。通过以下方式访问页面内容:

 ../pages/{page-id}/content

... for (1) 不返回任何内容

... for (2) 返回整个页面内容。

(两种方法返回的section-ids也完全不同。)

那么,如何从链接中提取有效的页面 ID?

【问题讨论】:

    标签: php onenote-api


    【解决方案1】:

    很遗憾,OneNote API 目前不支持在页面内容中识别指向其他 OneNote 页面的链接。 OneNote 中的链接可以是指向任何内容的链接:网站、其他 OneNote 页面/分区/笔记本、网络共享... API 确实支持通过使用获取页面链接

        GET ~/pages
        GET ~/sections/id/pages
    

    页面元数据模型包含一个带有 clientUrl 和 webUrl 的链接对象。


    问题更新后的编辑: 你是对的 - 链接中的 id 与 OneNote API 的 id 不对应。但是,您可以将链接中的 id 与 API 中公开的 OneNoteClientUrl 中的 id 进行比较。这是一个响应的示例

        GET ~/sections/id/pages
        GET ~/pages
    

    { "title": "从 WAC 创建", "createdByAppId": "", “链接”:{ "oneNoteClientUrl": { "href": "onenote:https://d.docs.live.net/29056cf89bb2d216/Documents/TestingNotification/Harrie%27s%20Section.one#Created%20from%20WAC&section-id=49b630fa-26cd-43fa-9c45-5c62d547ee3d&page-id=a60de930-0b03-4527-bf54-09f3b61d8838&end" }, "oneNoteWebUrl": { "href": "https://onedrive.live.com/redir.aspx?cid=29056cf89bb2d216&page=edit&resid=29056CF89BB2D216!156&parId=29056CF89BB2D216!105&wd=target%28Harrie%27s%20Section.one%7C49b630fa-26cd-43fa-9c45-5c62d547ee3d%2FCreated%20from%20WAC%7Ca60de930-0b03-4527-bf54-09f3b61d8838%2F%29" } }, "contentUrl": "https://www.onenote.com/api/v1.0/me/notes/pages/0-a50842a9873945379f3d891a7420aa39!14-29056CF89BB2D216!162/content", "thumbnailUrl": "https://www.onenote.com/api/v1.0/me/notes/pages/0-a50842a9873945379f3d891a7420aa39!14-29056CF89BB2D216!162/thumbnail", "lastModifiedTime": "2016-03-28T21:36:22Z", "id": "0-a50842a9873945379f3d891a7420aa39!14-29056CF89BB2D216!162", "自我": "https://www.onenote.com/api/v1.0/me/notes/pages/0-a50842a9873945379f3d891a7420aa39!14-29056CF89BB2D216!162", "createdTime": "2016-03-24T20:38:16Z", "parentSection@odata.context": "https://www.onenote.com/api/v1.0/$metadata#me/notes/pages('0-a50842a9873945379f3d891a7420aa39%2114-29056CF89BB2D216%21162')/parentSection(id,name,self)/$entity", “父节”:{ "id": "0-29056CF89BB2D216!162", "name": "Harrie's Section", “自我”:“https://www.onenote.com/api/v1.0/me/notes/sections/0-29056CF89BB2D216!162” } }

    您还可以使用以下方法过滤服务器端(如果您想避免分页和正则表达式;))以获取链接中的 id:

        GET ~/pages?$filter=contains(links/oneNoteClientUrl/href,'a60de930-0b03-4527-bf54-09f3b61d8838')
    

    【讨论】:

    • 如果您认为 API 应该支持这一点,我鼓励您在我们的用户语音网站中创建一个条目! onenote.uservoice.com/forums/245490-onenote-developer-apis
    • 再次感谢您的超级及时回答,豪尔赫。我现在将继续编写我的解析例程,因为我知道我没有重新发明轮子。我还会提出用户语音请求。
    • 再次感谢,豪尔赫。这非常有帮助,并阐明了我访问链接页面应该采取的方向。
    • 报告:这一切都做得很好,谢谢,豪尔赫。我使用了您的服务器端过滤器来减轻痛苦。花了一段时间才让它工作,直到我发现从 href 链接中提取的 page-id 需要强制小写才能匹配(奇怪的是他们使用不同的大小写?)。
    • UPDATE/CORRECTION:过滤器请求最近停止为我们工作,出现错误 400(错误请求)。 Graph Explorer 给出了消息"The number of maximum sections is exceeded for this request. To get pages for accounts with a high number of sections, we recommend getting pages for one section at a time (use the ~/sections/{id}/pages API)." 当我们这样做时,请求成功。所以 Jorge Aguirre 推荐的过滤请求现在应该是GET ~/sections/&lt;section-id&gt;/pages?$filter=contains(links/oneNoteClientUrl/href,'&lt;page-id&gt;')。
    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多