はじめに
Microsoft Graph APIで、個人的によく使うなー知っておくといいかーと思ったことをメモしています。
9割自分が後で見返すようですw
記載してあるコンテンツは目次でみてください。
順次更新予定ではあります。
Microsoft Graphについてはこちらのドキュメントを参照ください。
Microsoft Graph ドキュメント | Microsoft Learn
APIを試したい場合はGraphエクスプローラーで試すことも可能です。
Graph Explorer | Try Microsoft Graph APIs - Microsoft Graph
ここではデモデータ、自身のテナントにサインインを行って自身のテナントに向けてAPIを叩く子も可能です。
SharePoint
サイト
Microsoft Graph で SharePoint サイトを開く - Microsoft Graph v1.0 | Microsoft Learn
テナント内の既定のサイトを取得
GET https://graph.microsoft.com/v1.0/sites/root
テナント内のサイトをキーワードで検索する
GET https://graph.microsoft.com/v1.0/sites?search={site-name}
これで{site-id}を取得可能です。
すべてのSharePointサイトを表示する
GET https://graph.microsoft.com/v1.0/sites?search=*
これで{site-id}を取得可能です。
site-idを利用してサイトにアクセスする
GET https://graph.microsoft.com/v1.0/sites/{site-id}
リスト
ListItem リソース - Microsoft Graph v1.0 | Microsoft Learn
リストを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists
これで{list-id}を取得可能です。
リスト名でリストを取得する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists?$filter=displayName eq '{list-title}'
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}
これで{list-id}を取得可能です。
フィールド(列)一覧を取得する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/columns
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/columns
リストのアイテムを一覧表示する(多分やりたいのこれじゃない)
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items
これで取得できるのは以下列のアイテムのみです。
"value": [ { "@odata.etag": "取得結果", "createdDateTime": "取得結果", "eTag": "取得結果", "id": "取得結果", "lastModifiedDateTime": "取得結果", "webUrl": "取得結果", "createdBy": { "user": { "email": "取得結果", "id": "取得結果", "displayName": "取得結果" } }, "lastModifiedBy": { "user": { "email": "取得結果", "id": "取得結果", "displayName": "取得結果" } }, "parentReference": { "id": "取得結果", "siteId": "取得結果" }, "contentType": { "id": "取得結果", "name": "取得結果" } } ]
リストのアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?expand=fields
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items?expand=fields
fields
以下に恐らく取得したいだろう情報があります。
リストの特定の列のアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?expand=fields(select={Column1},{Column2})
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items?expand=fields(select={Column1},{Column2})
{Column1},{Column2}は自身の環境に合わせて置き換えてください。
リストの特定のidのアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/{item-id}
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items/{item-id}
{item-id}はリストが内部的にもっているID(1, 2, 3・・・などの連番で振られるあれ)です。
この場合は?expand=fields
を含めなくてもfields
が表示されます。
リストの特定の条件に一致するアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$filter=fields/{Column1} eq '{Keyword}' and {Column2} eq '{Keyword}'&$expand=fields
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items?$filter=fields/{Column1} eq '{Keyword}' and {Column2} eq '{Keyword}'&$expand=fields
注意点として、この検索を行うにはフィルター対象の列はインデックスが作成されている必要があります。
リストまたはライブラリ列にインデックスを追加する - Microsoft サポート
リストのアイテムのバージョン(変更履歴)を取得する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/{item-id}/versions
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items/{item-id}/versions
リストを作成する
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists
Body
{ "displayName": "Books", "columns": [ { "name": "Author", "text": {} }, { "name": "PageCount", "displayName": "ページ数", "description": "説明", "required": true, "number": {} } ], "list": { "template": "genericList" } }
上記例では以下のようなリストが作成されます。
リスト名: Books
作成される列
- 内部名: Author0
表示名: Author
種類: 1行テキスト - 内部名: PageCount
表示名: ページ数
種類: 数値
説明: 説明
必須: はい
Author列が最低限必要な構成で列を作成した場合ですね。
ただし、Authorは既定の列で同様の内部名があるので、末尾に0がつきます。
リストに列を作成する
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/columns
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/columns
Body
{ "description": "test", "enforceUniqueValues": false, "hidden": false, "indexed": false, "name": "name", "text": { "allowMultipleLines": false, "appendChangesToExistingText": false, "linesForEditing": 0, "maxLength": 255 } }
上記例だと、nameという名前の1行テキストが、説明に「test」と記載されて作成されますね。
列のプロパティ(種類含む)は以下サイトから一覧を見ることができます。
日本語だとプロパティまで和訳されているので英語でみることをおすすめします。
columnDefinition resource type - Microsoft Graph v1.0 | Microsoft Learn
例えばtextに設定すべき列は以下でみれます。
TextColumn - Microsoft Graph v1.0 | Microsoft Learn
リストにアイテムを作成する
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items
Body
{ "fields": { "Title": "Widget", "PageCount": 10, "name": "ABC" } }
上記例だと、以下のようなアイテムが作成されます。
リストにアイテムを作成する
PATCH https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/{item-id}/fields
PATCH https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items/{item-id}/fields
Body
{ "Author0": "me", "PageCount": 34, "name": "あいう" }
上記例だと、以下のようなアイテムに更新されます。
リストのアイテムを削除する
DELETE https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items/{item-id}
DELETE https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}/items/{item-id}
リストを削除する
DELETE https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}
DELETE https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}
フォルダ/ファイル操作
ドライブを取得する
ドライブとはドキュメント ライブライなどのファイルシステムの最上位の情報です。
フォルダ名やファイル名などとは異なるので注意してください。
自身のドライブを取得する
GET https://graph.microsoft.com/v1.0/me/drives
サイトのドライブを取得する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/drive
これで{drive-id}を取得可能です。
ドライブの子を一覧表示(アイテムの一覧表示)
自身のルート(トップ)にあるアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/me/drive/root/children
こちらでルート(トップ)にあるアイテムの{item-id}を取得可能です。
サイトのトップにあるアイテムを一覧表示する
GET https://graph.microsoft.com/v1.0/sites/{site-id}/drives/{drive-id}/root/children
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children
Generalとかのことですね。
{site-id}は省略しても取得可能です。
こちらで対象のドライブの配下にあるアイテムの{item-id}を取得可能です。
特定のフォルダのアイテムを一覧表示する
アイテムIDで指定
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/children
フォルダーパスで指定
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{path-relative-to-root}:/children
{path-relative-to-root}
は General/Folder1/Folder2
みたいに指定します。
なのでこのようになります。
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/General/Folder1/Folder2:/children
自身が最近使ったファイルを取得する
GET https://graph.microsoft.com/v1.0/me/drive/recent
アイテムのバージョンを取得する
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/versions
アイテムのアクティビティ(Analytics)を取得する
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/analytics
閲覧したユーザなども取得したい場合は以下のようにします。
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/analytics/analytics/allTime?$expand=activities($filter=access ne null)
なお閲覧者の情報まで取得したい場合は、
サイトコンテンツの
サイトの操作 > サイト機能の管理
より、「SharePoint 閲覧者」をアクティブにしないといけません。
以下リンクからアクセスすることもできます。
https://[Your-Domain].sharepoint.com/sites/[Your-Site]/_layouts/15/ManageFeatures.aspx
特定の時間間隔でのアイテムのアクティビティ(Analytics)を取得する
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/getActivitiesByInterval(startDateTime={startDateTime},endDateTime={endDateTime},interval={interval})
{startDateTime}及び{endDateTime}には"yyyy-MM-dd"形式で指定します。
{interval}には"day"などを指定します。
フォルダ名/ファイル名を変更する
PATCH https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}
Body
{ "name": "new-file-name.docx" }
ファイル名だけでなくファイルの拡張子も変更することが可能です。
アイテムを移動する
PATCH https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}
Body
{ "parentReference": { "driveId": "{drive-id}", "id": "{item-id}" }, "name": "{item-name}.{item-extention}" }
{item-id}にはコピーしたい親フォルダのidを指定します。
"name"には拡張子付きのファイル名を指定します。
元ファイルとは異なる拡張子を指定することも可能です。
"driveId"は省略することも可能です。
省略した場合は同一ドライブ(同一サイト)内に移動されます。
PATCH https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}
Body
{ "parentReference": { "id": "{item-id}" }, "name": "{item-name}.{item-extention}" }
アイテムをコピーする
POST https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/copy
Body
{ "parentReference": { "driveId": "{drive-id}", "id": "{item-id}" }, "name": "{item-name}.{item-extention}" }
{item-id}にはコピーしたい親フォルダのidを指定します。
"name"には拡張子付きのファイル名を指定します。
元ファイルとは異なる拡張子を指定することも可能です。
"driveId"は省略することも可能です。
省略した場合は同一ドライブ(同一サイト)内にコピーされます。
POST https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/copy
Body
{ "parentReference": { "id": "{item-id}" }, "name": "{item-name}.{item-extention}" }
アイテムを削除する
DELETE https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}
アイテムを完全に削除する
POST https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permanentDelete
ゴミ箱にもいかないので注意してください。
復元できなくなります。