2017-04-21 225 views
2

我正在研究构建Microsoft Word的插件,这将涉及到创建当前文档的副本。获取当前Word文档的OneDrive项目ID文档

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

我似乎无法找到如何通过Office JavaScript API获取当前Word文档的项目标识。

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

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

回答

2

没有办法只使用Office.js来做到这一点,您还需要利用Microsoft Graph来查找实际的ID。

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

举例来说,如果你有的https://d.docs.live.net/<id>/Documents/somedoc.docx一个URI你可以决定以下事项:

  • 这是消费者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中。用户必须使用相同凭据来针对图表进行身份验证,以确保他们正在保存的驱动器不受影响。

+0

谢谢!这是一个非常有用的答案。尽管在使用图形浏览器时,我看到Graph端点应该在文件夹之后包含子项,以列出文档。所以,它看起来像这样:https://graph.microsoft.com/v1.0/me/drive/root/children/Documents/children?$filter=name eq'somedoc.docx'这是我应该的行为期望? – stmcallister

+1

正确。从技术上讲,这将返回一个数组,但我们依赖于名称对于每个文件夹唯一的要求,所以数组应该只有1个条目。 –

+0

我也发现了使用冒号后面的相对路径的这种方法。 https://graph.microsoft.com/v1.0/me/drive/root:/somedoc.docx。使用此方法而不是$ filter是否存在差异或缺点? – stmcallister