我正在考虑为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?
答案 0 :(得分:2)
使用Office.js无法实现此目的,您还需要利用Microsoft Graph来查找实际ID。
保存文件后,您可以使用getFilePropertiesdAsync获取URI。您需要从URI解析文档名称和路径。然后,您可以使用云端硬盘Children方法中的查询过滤器来隔离您正在寻找的特定文件。
例如,如果您的URI为https://d.docs.live.net/<id>/Documents/somedoc.docx
,则可以确定以下内容:
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