获取当前Word文档的OneDrive项目ID

时间:2017-04-21 00:23:50

标签: office365 microsoft-graph office-js onedrive

我正在考虑为Microsoft Word构建一个加载项,该加载项涉及创建当前文档的副本。

我找到了copy an item through the OneDrive API的位置。但是,这需要复制文档的item-id。

我似乎无法通过Office JavaScript API找到如何获取当前Word文档的item-id。

我查看了Office.context.document对象,以及Office.context.document.getFileAsync()Office.context.document.getFilePropertiesAysnc()函数。

如何获得当前Word文档的OneDrive项目ID?

2 个答案:

答案 0 :(得分:2)

使用Office.js无法实现此目的,您还需要利用Microsoft Graph来查找实际ID。

保存文件后,您可以使用getFilePropertiesdAsync获取URI。您需要从URI解析文档名称和路径。然后,您可以使用云端硬盘Children方法中的查询过滤器来隔离您正在寻找的特定文件。

例如,如果您的URI为https://d.docs.live.net/<id>/Documents/somedoc.docx,则可以确定以下内容:

  • 这是消费者OneDrive(请注意live.net URI)
  • 文档名称为somedoc.docx
  • 它存储在目录Documents

要查找此文档,您将执行以下Graph命令:

https://graph.microsoft.com/v1.0/me/drive/root/children/Documents?$filter=name eq 'somedoc.docx'

所有这一切都可以直接在您的加载项中执行。请记住,用户可以将文档保存到OneDrive和OneDrive for Business。用户必须使用相同凭据对其保存的驱动器进行身份验证。

答案 1 :(得分:1)

公认的解决方案不是做到这一点的最佳方法,也许不再是因为微软从那时开始更改了api。

它对于根文件非常有效;但是,对于嵌套文件夹中的文件,您必须多次执行相同的查询,直到获得所有文件夹ID。因为您需要这些ID才能构建包含要搜索的文件的完整路径。

到目前为止,这是一种更简单的方法。 假设get Office.context.document.getFilePropertiesAysnc()给您https://d.docs.live.net/<id>/MyFolder1/MyFolder2/somedoc.docx

图形端点应为: https://graph.microsoft.com/v1.0/me/drive/root:/MyFolder1/MyFolder2/Document.docx