2017-04-21 274 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