Если у нас есть ссылка на другую страницу OneNote в содержании HTML:
<a href="onenote:SectionB.one#Note1&section-id={<section-id>}&page-id={<page-id>}&end&base-path=https://<path>"
… перед тем, как написать процедуру синтаксического анализа для извлечения этой ссылки, я подумал, что должен спросить, не упустил ли я что-нибудь в OneNote API, чтобы упростить эту задачу.
================================================== =========================
[EDIT] Хорошо, я написал свою процедуру для извлечения идентификатора страницы связанной заметки, но этот идентификатор страницы оказывается весьма отличным от идентификатора страницы, который возвращается как свойство (идентификатор) связанной заметки. сам по себе — и это не работает 🙁Вот пример:
(1) идентификатор страницы, извлеченный из ссылки: A8CECE6F-6AD8-4680-9773-6C01E96C91D0
(2) идентификатор страницы как свойство заметки:
0-5f49903893f048d0a3b1893ef004411f!1-240BD74C83900C17!124435
Как видите, сильно отличается. Доступ к содержанию страницы через:
../pages/{page-id}/content
… for (1) ничего не возвращает
… for (2) возвращает полное содержимое страницы.
(Идентификаторы разделов, возвращаемые обоими методами, также совершенно разные.)
Итак, как извлечь из ссылки работающий идентификатор страницы?
К сожалению, API OneNote в настоящее время не поддерживает идентификацию ссылок на другие страницы OneNote в содержимом страницы. Ссылки в OneNote могут быть ссылками на что угодно: веб-сайты, другие страницы / разделы / записные книжки OneNote, сетевые ресурсы …
API поддерживает получение ссылок на страницы с помощью
GET ~/pages
GET ~/sections/id/pages
Модель метаданных страницы содержит объект ссылки с clientUrl и webUrl.
Редактирование после обновления вашего вопроса:
Вы правы — идентификатор в ссылке не соответствует идентификатору API OneNote. Однако вы можете сравнить идентификатор в ссылке с идентификатором в OneNoteClientUrl, представленном в API. Вот пример ответа
GET ~/sections/id/pages
GET ~/pages
{
«title»: «Создано из WAC»,
«creationByAppId»: «»,
«ссылки»: {
«oneNoteClientUrl»: {
«href»: «onenote:https://d.docs.live.net/29056cf89bb2d216/Documents/TestingNotification/Harrie%27s%20Section.one#Created%20from%20WAC&Секция-ID = 49b630fa-26cd-43fa-9c45-5c62d547ee3d&страница-ID = a60de930-0b03-4527-bf54-09f3b61d8838&конец«},
«oneNoteWebUrl»: {
«href»: «https://onedrive.live.com/redir.aspx?cid=29056cf89bb2d216&страница = редактировать&Resid = 29056CF89BB2D216! 156&parId = 29056CF89BB2D216! 105&= WD целевой% 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»,
«createTime»: «2016-03-24T20: 38: 16Z»,
«[email protected]»: «https://www.onenote.com/api/v1.0/$ # Метаданных мне / примечания / страницы ( ‘0-a50842a9873945379f3d891a7420aa39% 2114-29056CF89BB2D216% 21162’) / parentSection (идентификатор, имя, само) / $ сущность»,
«parentSection»: {
«id»: «0-29056CF89BB2D216! 162»,
«имя»: «Секция Харри»,
«Я»: «https://www.onenote.com/api/v1.0/me/notes/sections/0-29056CF89BB2D216!162«}
}
Вы также можете отфильтровать на стороне сервера (если вы хотите уберечь себя от подкачки и регулярных выражений;)) для идентификаторов в ссылках, используя:
GET ~/pages?$filter=contains(links/oneNoteClientUrl/href,'a60de930-0b03-4527-bf54-09f3b61d8838')
Других решений пока нет …