как найти объект записной книжки OneNote из driveItem с помощью MS Graph?

#microsoft-graph-api #onedrive #onenote-api #microsoft-graph-sdks

#microsoft-graph-api #onedrive #onenote-api #microsoft-graph-sdks

Вопрос:

Когда записная книжка OneNote создается в OneDrive, Microsoft показывает a DriveItem с фасетом пакета и type of oneNote . Это точно соответствует документации. driveItem Похоже, что это ссылка / ссылка на фактическую записную книжку, которая хранится в «скрытой» папке.

Существуют также API Graph для получения списка всех записных книжек OneNote пользователя, и вы можете получить конкретную записную книжку по ней id . Однако записная id книжка не такая, как она driveItem есть.

Учитывая a driveItem с аспектом пакета OneNote, как мне получить id фактическую записную книжку, чтобы я мог получить ее и ее детали?

Я довольно тщательно исследовал, используя Graph Explorer, но безуспешно. Я не могу поверить, что это правда, но должны ли «имена» записных книжек быть уникальными? Это единственное свойство, которое я вижу (кроме разрешений владельца / пользователя), которое будет коррелировать между двумя объектами.

Ответ №1:

Записная книжка id не отображается через DriveItem ресурс. Они возвращаются API, поэтому они точно отражают те же файлы, которые возвращает пользовательский интерфейс OneDrive, но они не предназначены для прямого взаимодействия. Для работы с записными книжками необходимо использовать Notes API.

Документация OneDrive немного более прямолинейна по этой теме:

Работа с записными книжками OneNote

Примечание: Хотя OneDrive хранит записные книжки OneNote, вы не должны использовать API OneDrive для работы с записными книжками OneNote.

Этот набор документов также включает в себя более полное описание типа ресурса пакета.

На данный момент не существует простого способа обнаружить записные id книжки из-за их соответствия DriveItem . Есть один трюк, который вы можете использовать, но, честно говоря, это не документированный метод.

  1. Используя Graph Explorer (без входа в систему), выполните следующий вызов:

     https://graph.microsoft.com/v1.0/me/drive/items/01BYE5RZ35EU76DRTYZ5DK5DATNBSRPLC7
      
  2. Посмотрите на результат eTag :

     "eTag": ""{E13F257D-78C6-46CF-AE8C-13686517AC5F},1""
      
  3. Теперь взгляните на список записных книжек, используя:

     https://graph.microsoft.com/v1.0/me/onenote/notebooks
      
  4. Первая возвращенная записная книжка имеет следующий идентификатор:

     "id": "1-e13f257d-78c6-46cf-ae8c-13686517ac5f",
      
  5. Когда вы посмотрите на них бок о бок, вы заметите, что записная id книжка содержит те же данные, eTag что и, хотя и в несколько ином порядке ( {digit}-{guid} ):

     "eTag": ""{E13F257D-78C6-46CF-AE8C-13686517AC5F},1""
    "id": "1-e13f257d-78c6-46cf-ae8c-13686517ac5f",
      

Я использовал это сам, но я был бы осторожен и убедился, что ваш код использует не только eTag (я посмотрел на eTag owner , и name свойства). Он не «поддерживается», поэтому возможно, что это может измениться, поэтому сравнение нескольких свойств может предотвратить сбой в just.

О, и никому не говорите. Это только между нами. 😉

Комментарии:

1. Спасибо, Марк. Я пытаюсь «принять близко к сердцу», не используя Graph DriveItem для работы с ноутбуком, поэтому я спрашивал, как узнать идентификатор записной книжки, чтобы я мог использовать соответствующие API Graph-Notes. Записные книжки отображаются на диске как DriveItems, поэтому пользователи ожидают «увидеть их» в папках, в которых они (думают, что они) их сохранили. Ваша «формула» для перевода идентификатора выглядит правильно для меня, но эти недокументированные функции явно рискованны. Странно, что они показывают DriveItem, говорят нам не использовать его для доступа, а затем не дают нам способ получить фактический ноутбук. Еще раз спасибо!

2. Я ожидаю, что это в конечном итоге исчезнет, но я полностью понимаю, насколько это разочаровывает в то же время. В Graph есть несколько функциональных проблем, подобных этой. Многие из них сводятся к распределению групп разработчиков, каждая из которых по-разному оценивает свои отставания.

3. похоже, ваш «секрет» раскрылся, и Microsoft изменила его:-( Это больше не работает. Идентификатор guid, содержащийся в ETag элемента driveItem, больше не связан с идентификатором записной книжки. Возможно, это все еще работает, если notbook находится на версии 1

4. Все еще работает с моими 2 арендаторами