コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Microsoft Graph APIサンプル集


スポンサードリンク

はじめに

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}を取得可能です。

{site-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

ゴミ箱にもいかないので注意してください。
復元できなくなります。

次回更新は気が向いたら!


スポンサードリンク