2017-04-21 13 views
2

現在のドキュメントのコピーを作成するためのMicrosoft Wordのアドインを作成しています。現在のWord文書のOneDriveアイテムIDを取得する

私はどこでできるのかを見つけました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のdocのOneDrive Item Idはどのように取得されますか?

答えて

2

Office.jsだけでこれを行う方法はありません。実際のIDを見つけるには、Microsoft Graphを活用する必要があります。

保存したファイルを取得したら、getFilePropertiesdAsyncを使用してURIを取得できます。 URIから文書名とパスを解析する必要があります。ドライブのChildrenメソッドでクエリフィルタを使用して、探している特定のファイルを特定することができます。あなたがhttps://d.docs.live.net/<id>/Documents/somedoc.docxのURIを持っている場合たとえば、あなたは次のことを決定することができ

  • これは、文書名はsomedoc.docx
  • それである消費者OneDrive(live.net URIに注意してください)
  • ですディレクトリに格納されますDocuments

この文書を見つけるには、次のGraphコマンドを実行します。

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

これはすべてアドイン内から直接実行できます。 OneDriveとOneDrive for Businessの両方に文書を保存することができます。ユーザは、保存しているドライブに対してと同じ資格情報を使用してグラフに対して認証する必要があります。

+0

ありがとうございます!それは非常に有益な答えでした。グラフエクスプローラで遊んで、私は、グラフのエンドポイントは、フォルダの後に子を含める必要がありますが、ドキュメントを一覧表示しています。だから、これは次のようになります: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

関連する問題