如何使用MS Graph从driveItem中找到OneNote Notebook对象?

时间:2019-04-09 15:40:01

标签: microsoft-graph onedrive onenote-api microsoft-graph-sdks

在OneDrive中创建OneNote笔记本时,Microsoft将显示一个DriveItem,其包装面为type,其中oneNote为包。正是根据文档。 driveItem似乎是指向实际笔记本的链接/引用-存储在“隐藏”文件夹中。

也有Graph API来获取所有用户的OneNote笔记本的列表,您可以通过id来检索特定的笔记本。但是,笔记本电脑的iddriveItem并不相同。

给出一个带有OneNote包刻面的driveItem,如何获取实际笔记本的id,以便我可以检索它及其详细信息?

我使用Graph Explorer进行了彻底的研究,但没有成功。我不敢相信这是真的,但是笔记本的“名称”是否必须唯一?这是我可以看到的唯一一个属性(所有者/用户权限除外),可以在两个对象之间建立关联。

1 个答案:

答案 0 :(得分:2)

笔记本id并未通过DriveItem资源浮出水面。它们是由API返回的,因此可以准确地反映出OneDrive UI返回的相同文件,但它们并不意味着可以直接进行交互。要使用笔记本电脑,您需要使用Notes API

OneDrive Documentation在此主题上更为直接:

  

使用OneNote笔记本

     

注意:尽管OneDrive存储OneNote笔记本,但您不应使用OneDrive API来处理OneNote笔记本。

此文档集还包含对Package resource type的更完整描述。

目前,没有一种简单的方法可以从与之对应的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:

    "id": "1-e13f257d-78c6-46cf-ae8c-13686517ac5f",
    
  5. 并排查看这些内容时,您会注意到笔记本计算机的ideTag包含相同的数据,尽管顺序略有不同({{1 }}):

    {digit}-{guid}

我自己使用过此代码,但请注意,并确保您的代码使用的不仅仅是"eTag": "\"{E13F257D-78C6-46CF-AE8C-13686517AC5F},1\"" "id": "1-e13f257d-78c6-46cf-ae8c-13686517ac5f", (我查看了eTageTag和{ {1}}个属性)。它不受“支持”,因此可能会发生变化,因此比较多个属性可以防止不幸。

哦,别告诉任何人。这只是我们之间。 ;)