Microsoft Graph

[Microsoft Graph]バッチ処理を試してみました。

先日公開された下記動画を見て、面白そうだったのでMicrosoft Graphのバッチ処理を試してみることにしました。

Graph エクスプローラーを使ったAPIのテスト

上記動画でも使われていますが、Microsoft Graphの各APIをテストするのに便利なツール「Graph エクスプローラー」が用意されているので、今回はこれを使います。

  1. Graph エクスプローラーを開き、Microsoft アカウントでサインインします。
  2. サンプルをさらに表示」から「バッチ処理」をオンにします。
  3. GET を並列で実行する」をクリックし、「クエリを実行」ボタンをクリックします。
  4. 応答のプレビュー」に、POSTしたリクエストの結果が表示されます。
  5. {
        "responses": [
            {
                "id": "1",
                "status": 200,
                "headers": {
                    "Cache-Control": "no-cache",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(displayName,jobTitle,userPrincipalName)/$entity",
                    "displayName": "**** ****",
                    "surname": "****",
                    "givenName": "****",
                    "id": "****************",
                    "userPrincipalName": "***********@outlook.jp",
                    "businessPhones": [],
                    "jobTitle": null,
                    "mail": null,
                    "mobilePhone": null,
                    "officeLocation": null,
                    "preferredLanguage": null
                }
            },
            {
                "id": "3",
                "status": 200,
                "headers": {
                    "Cache-Control": "private",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('***********%40outlook.jp')/events",
                    "value": []
                }
            },
            {
                "id": "2",
                "status": 200,
                "headers": {
                    "Cache-Control": "private",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('***********%40outlook.jp')/messages(from,subject,receivedDateTime,bodyPreview)",
                    "value": []
                }
            }
        ]
    }

この結果を見る限り、まとめて送信したリクエストはそれぞれ無事に処理できたようです。
これでMicrosoft Graphにおけるバッチ処理の概要は掴めました。

バッチ処理について

上記サンプルの通り、「$batch」エンドポイントに複数のリクエストをPOST送信することで、バッチ処理できます。

HTTP
POST https://graph.microsoft.com/v1.0/$batch
Accept: application/json
Content-Type: application/json
BODY
  • 必須プロパティ:requests, id, url, method
  • idプロパティを指定することで、各要求と応答を対応させることができます。

詳細は下記ドキュメント参照。

{
  "requests": [
    {
      "url": "/me",
      "method": "GET",
      "id": "1"
    },
    {
      "url": "/me/messages",
      "method": "GET",
      "id": "2"
    },
    {
      "url": "/me/drive/root/children",
      "method": "GET",
      "id": "3"
    }
  ]
}

制限事項

Microsoft Graph に関する既知の問題」にある通り、2019年6月時点では下記の制限事項があります。

  1. 入れ子になったバッチリクエストには未対応
  2. すべてのリクエストは同期実行
  3. トランザクション未対応
  4. リクエストは必ず相対URIで指定
  5. 一度に処理できるリクエストは20件まで
  6. 各リクエストは、他のリクエスト1つだけに依存可能(条件は「JSON バッチ処理」参照)

特にトランザクション未対応というのは中々ロックな制限ですね。
投げたら投げっぱなしです。

ただ、バッチ処理の完成度が上がるにつれて、これらの制限はなくなるとのことなので、いずれはもっと使い勝手が良くなるだろうと思います。

おわりに

今回はMicrosoft Graphのバッチ処理を触るのが初めてだったので、GETのみの簡単なリクエストだけでテストしましたが、バッチ処理はGETもPOSTも組み合わせて行うことができます。

複数のリクエストを1つにまとめることで効率良く処理できるようになるので、使用場面は多いだろうと思いますが、上記の通り、現状ではいくつかの制限事項があるので、今後のバージョンアップに期待したいところです。

関連記事

  1. Microsoft Graph

    「30 Days of Microsoft Graph」の紹介

    11月1日からMicrosoft Graphについて毎日紹介する、アド…

  2. Microsoft Graph

    [Google Apps Script]Microsoft Graph APIを使ってMicroso…

    Microsoft Graph APIを使って、OneDriveにある…

  3. Office関連

    Office 365 unified APIをJavaScriptだけで呼び出す

    Microsoftの松崎さんのブログに下記の記事がありました。…

  4. Microsoft Graph

    [Google Apps Script]Office 365 unified APIを使ってメールを…

    久しぶりのGoogle Apps Scriptネタです。今回はGo…

  5. Office関連

    Excel REST APIをVBAから呼び出す方法

    「Microsoft GraphをVBAから呼び出してOneNoteの…

  6. Office関連

    Office 365 unified APIをVBAから呼び出す

    前回の記事で、VBAからOffice 365 APIを呼び出す手順につ…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP