Onenote не возвращает страницы

Это тот же вопрос, что и API страниц OneNote не возвращает страницы в группы разделов.

Я использую Получить разделы и получить страницы разделов с расширенными разделами, чтобы получить имена для всех страниц в записной книжке. Однако при постоянном использовании одних и тех же запросов разделы в группах разделов иногда исчезают и не появляются снова до воссоздания группы.

Это ошибка, которую можно как-то обойти, или есть лучший способ опросить все имена страниц из определенной записной книжки? Страницы должны быть в порядке.


person Walliski    schedule 03.10.2016    source источник
comment
+1 кажется, что API не работает, но dev.onenote.com возвращает корректный результат. Просто посчитайте 0 и пустое значение   -  person Ivan Maslov    schedule 17.10.2016
comment
Привет, Уоллиски! Команда API OneNote получила ваше электронное письмо, и мне поручили помочь вам с вашей проблемой. Я копаюсь в журналах отправленного вами запроса и посмотрю, смогу ли я диагностировать ошибку. Просто для пояснения, что вы имеете в виду под разделами в группах разделов ... не появятся снова до воссоздания группы?   -  person Vishaal Kalwani    schedule 13.12.2016
comment
Под воссозданием я подразумеваю создание новой группы разделов под названием temp, затем перемещение всех разделов в новую группу разделов и, наконец, удаление сломанной.   -  person Walliski    schedule 13.12.2016
comment
Вау, это довольно серьезно! Спасибо за это разъяснение. Я сообщу здесь к концу этой недели предварительные результаты расследования. Я сообщу вам, когда опубликую, чтобы вам не приходилось проверять :)   -  person Vishaal Kalwani    schedule 14.12.2016
comment
Мы не смогли воспроизвести проблему, потому что не уверены в жизненном цикле записной книжки (обновляются ли люди, влияет ли на нее синхронизация и т. Д.)? Лучшим способом воспроизвести проблему для нас было бы предоставить нам CorrelationId успешного вызова и CorrelationId неудачного вызова. Затем мы сравним журналы каждого запроса, чтобы увидеть, что отличает их. Лучше всего, чтобы этот Блокнот не изменялся между запросами. Если бы вы могли предоставить что-то подобное или дополнительную информацию о том, как используется записная книжка, это было бы огромным благом для расследования.   -  person Vishaal Kalwani    schedule 17.12.2016
comment
Ноутбук используется постоянно. Не думайте, что он сломается, и никто не изменит его, и он не исправит сам себя, нужно воссоздать группу разделов.   -  person Walliski    schedule 19.12.2016
comment
Спасибо, что подтвердили, что все время используются. К сожалению, отследить ошибку очень сложно. Если вы можете создать фиктивную записную книжку и подключить любой код, который вам нужен, для работы с этой записной книжкой, и время от времени отслеживать его, чтобы увидеть, не выполняется ли запрос, это было бы здорово. Если нет, мы понимаем (это довольно утомительно), но мы ничего не можем сделать. Я также ответил на ваш комментарий ниже.   -  person Vishaal Kalwani    schedule 20.12.2016


Ответы (1)


Если вы пытаетесь получить все имена страниц для записной книжки, существует обходной путь с использованием вложенного фильтра OData. Идея состоит в том, чтобы запросить все страницы, $expand parentNotebook, а затем $filter на id parentNotebook. Вот пример URL.

GET ~/pages?$expand=parentNotebook&$filter=parentNotebook/id%20eq%20'{$notebook_id_here}'

Вот еще один вопрос SO, где кто-то использует аналогичный шаблон: Лучший способ использовать One Note API для ПОЛУЧЕНИЯ определенных страниц в определенном разделе в конкретной записной книжке?

Обновление:

Вы можете управлять порядком возвращаемых страниц, используя OData $orderby и указав свойства, которые существуют для сущностей в возвращаемом наборе сущностей (в данном случае сущностью являются страницы). Из dev.onenote.com: «[порядок] по умолчанию - lastModifiedTime desc (сначала самая последняя измененная страница)».

В разделе https://dev.onenote.com/docs#/reference/get-pages есть раздел «Свойства страницы», в котором показаны все свойства, возвращаемые этим вызовом. Поскольку мы получаем все страницы, доступные пользователю, которые существуют в записной книжке, единственное свойство, которое мы можем использовать, к сожалению, createdTime.

Добавляемый параметр запроса выглядит как $orderby=createdTime

В полном объеме:

GET ~/pages?$expand=parentNotebook&$filter=parentNotebook/id%20eq%20'{$notebook_id_here}&$orderby=createdTime

Я только что протестировал это с помощью Fiddler на своих собственных страницах, поэтому думаю, что это должно сработать. Приятно то, что это единичный запрос.

ПОЛУЧИТЬ https://www.onenote.com/api/v1.0/me/notes/pages?$expand=parentNotebook&$filter=parentNotebook/id%20eq%20'{$YOUR_NOTEBOOK_ID_HERE}'&$orderby=createdTime

person Vishaal Kalwani    schedule 16.12.2016
comment
Если я сделаю это, будет ли порядок страниц на них, чтобы я знал, как они упорядочены? - person Walliski; 19.12.2016
comment
Вероятно, следовало бы уточнить это лучше. Под заказом я имел в виду параметр уровня страницы, доступный отсюда: dev.onenote.com/ документы # / reference / get-pages. Если он также доступен, это может быть альтернативой. Придется разобраться, спасибо! - person Walliski; 03.01.2017
comment
К сожалению, спецификатор pagelevel недоступен для этой конечной точки :(. Вышеупомянутый обходной путь, вероятно, настолько близок, насколько мы можем. Если вы можете найти репро-ситуацию с неработающей записной книжкой, мы можем покопаться в ней, чтобы ваш оригинал метод будет работать в 100% случаев. - person Vishaal Kalwani; 03.01.2017