Microsoft Graph を使うと、個人の OneDrive、OneDrive for Business および SharePoint のドキュメントライブラリにあるファイルを操作できます。
ドライブリソース
OneDrive 自体や SharePoint のドキュメントライブラリなど最上位のオブジェクトで、ファイルを指定する際にまずドライブを指定する必要があります。また自分のドライブやグループのドライブなど様々なリソースに紐づいています。
主なシナリオ
- 各種ドライブの一覧表示、特殊フォルダーを含む個別ドライブへのアクセス
- ドライブ内のアイテムの取得、検索
- フォルダーの作成
ドライブリソースの操作
いくつか代表的な操作を以下に紹介します。
OneDrive または OneDrive for Business ドライブ, およびグループドライブの取得
GET: https://graph.microsoft.com/v1.0/me/drives
GET: https://graph.microsoft.com/v1.0/groups/{id}/drives
await graphClient.Me.Drives.Request().GetAsync();
await graphClient.Groups["id"].Drives.Request().GetAsync();
OneDrive や既定の SharePoint サイトドライブの取得
GET: https://graph.microsoft.com/v1.0/me/drive/root
GET: https://graph.microsoft.com/v1.0/sites/root/drive/root
await graphClient.Me.Drive.Root.Request().GetAsync();
await graphClient.Sites["root"].Drive.Request().GetAsync();
ドライブ内のアイテム一覧、検索、最近使ったファイル
アイテムにはフォルダーとファイルが含まれます。最近使ったファイルは OneDrive、SharePoint に関係なくすべてのロケーションから情報が取得されます。
GET: https://graph.microsoft.com/v1.0/me/drive/root/children
GET: https://graph.microsoft.com/v1.0/me/drive/root/search(q='de:code')?select=name,id,webUrl
GET: https://graph.microsoft.com/v1.0/me/drive/recent
await graphClient.Me.Drive.Root.Children.Request().GetAsync();
await graphClient.Me.Drive.Root.Search("de:code").Request().Select("name,id,webUrl").GetAsync();
await graphClient.Me.Drive.Recent().Request().GetAsync();
特殊なドライブへのアクセス
写真やドキュメントなど特殊フォルダーにアクセスできます。詳細は 名前で特殊フォルダーを取得する を参照。
GET: https://graph.microsoft.com/v1.0/me/drive/special/photos
GET: https://graph.microsoft.com/v1.0/me/drive/special/documents
await graphClient.Me.Drive.Special["photos"].Request().GetAsync();
await graphClient.Me.Drive.Special["documents"].Request().GetAsync();
ドライブアイテム
ドライブ内にある各オブジェクトはドライブアイテムリソースとなります。
主なシナリオ
- アイテムの作成、読み取り、更新、削除 (CRUD)
- アイテムのコピー、移動、検索、共有
- サムネイルの取得
- アクセス権の管理
- フォルダに対してコンテンツのアップロード、ダウンロード
ドライブアイテムリソースの操作
いくつか代表的な操作を以下に紹介します。
フォルダーを作成する
POST: https://graph.microsoft.com/v1.0/me/drive/root/children
{
"name": "サンプルフォルダ",
"folder": { },
"@microsoft.graph.conflictBehavior": "rename"
}
var folder = await graphClient.Me.Drive.Root.Children.Request().AddAsync(new DriveItem()
{
Name = "サンプルフォルダ",
Folder = new Folder(),
AdditionalData = new Dictionary<string, object>()
{
{ "@microsoft.graph.conflictBehavior", "rename" }
}
});
サムネイルを取得する
サムネイルを取得すると、各サイズのサムネイルの URL が返ります。
GET: https://graph.microsoft.com/v1.0/me/drive/items/{id}/thumbnails
await graphClient.Me.Drive.Items["id"].Thumbnails.Request().GetAsync();
ファイルをダウンロードする
format を指定した場合、指定したフォーマットでダウンロードできます。ここでは PDF 形式でダウンロードを指定。
GET: https://graph.microsoft.com:443/v1.0/me/drive/items/{id}/content
GET: https://graph.microsoft.com:443/v1.0/me/drive/items/{id}/content?format=pdf
await graphClient.Me.Drive.Items["id"].Content.Request().GetAsync();
await graphClient.Me.Drive.Items["id"].Content.Request
(
new List<Option>() { new QueryOption("format", "pdf") }
).GetAsync();
まとめ
個人のファイルを活用するために OneDrive から SharePoint にファイルを集約したり、アプリケーションでサムネイルを活用したりしてみてください。
参照
Microsoft Graph でのファイル操作
Microsoft Graph でのドライブ操作
Microsoft Graph でのドライブアイテム操作