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

Get OneDrive Item Id for Current Word doc

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

我找到了可以 copy an item through the OneDrive API 的地方。但是,这需要复制文档的项目 ID。

我似乎找不到如何通过 Office JavaScript API 获取当前 Word 文档的项目 ID。

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

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

无法仅使用 Office.js 来执行此操作,您还需要利用 Microsoft Graph 才能找到实际 ID。

保存文件后,您可以使用 getFilePropertiesdAsync. You'll need to parse the document name and path from the URI. You can then use query filters on the Drive's Children 方法获取 URI,以隔离您要查找的特定文件。

例如,如果您的 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。用户必须使用相同的凭据 对他们正在保存的驱动器进行图形验证。

接受的答案中的解决方案不是最好的方法,也许不再是因为微软从那时起改变了 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