イベント: デルタ

名前空間: microsoft.graph

重要

Microsoft Graph のバージョンの /beta API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 API が v1.0 で使用できるかどうかを確認するには、 バージョン セレクターを使用します。

1 つ以上 予定表で追加、削除、または更新された一連のイベント リソースを取得します。

これらの増分変更の特定の種類は、メールボックスのすべての予定表または特定の予定表内のイベント、または予定表の calendarView (開始日と終了日で定義されるイベントの範囲) のイベント コレクションで取得できます。 予定表には、既定の予定表、またはユーザーの他の指定された予定表を指定できます。 calendarView で増分変更を取得する場合、予定表はグループ カレンダーにすることもできます。

通常、ローカル ストアの予定表または calendarView 内のイベントを同期するには、複数のデルタ関数呼び出し が必要 です。 最初の呼び出しは完全同期であり、同じラウンド内のすべての後続のデルタ呼び出しは増分変更 (追加、削除、または更新) を取得します。 これにより、指定した予定表内のイベントのローカル ストアを維持および同期できます。そのカレンダーのすべてのイベントをサーバーから毎回フェッチする必要が生じることなく実行できます。

次の表に、イベントのデルタ関数とカレンダーの calendarViewのデルタ関数 違いを示します。

イベントのデルタ関数 calendarView のデルタ関数
開始日と終了日の範囲で境界が設定されていない予定表のすべてのイベントの増分変更を取得します。 または、開始時刻によって境界が設定されたカレンダー内のイベントの増分変更を取得することもできます。その日付/時刻以降に開始します。 calendarView の開始日時と終了日時内のイベントの増分変更を 取得します
パフォーマンス上の理由から、限 られた一連のイベント プロパティのみを返します。 その後、イベントを展開 GET /events/{id} するために使用するクライアント。 サーバー側の拡張は、より完全なイベント プロパティのセット を返 します。
応答には、単一インスタンスと定期的なシリーズ マスターが含まれます。 応答には、1 つのインスタンス、および定期的な系列の発生と例外が含まれます。
ユーザーカレンダーのイベントには適用されますが、グループカレンダーには適用されない。 ユーザーカレンダーとグループ カレンダーのイベントに適用されます。
現在、ベータ版でのみ利用可能です。 v1.0 およびベータ版で使用できます。

アクセス許可

この API を呼び出すには、次のいずれかのアクセス許可が必要です。アクセス許可の選択方法などの詳細については、「アクセス許可」を参照してください。

アクセス許可の種類 アクセス許可 (特権の小さいものから大きいものへ)
委任 (職場または学校のアカウント) Calendars.Read、Calendars.ReadWrite
委任 (個人用 Microsoft アカウント) Calendars.Read、Calendars.ReadWrite
アプリケーション Calendars.Read、Calendars.ReadWrite

HTTP 要求

このセクションでは、指定した予定表ビューまたは予定表ビューのすべてのイベントを取得する完全同期を開始するための初期デルタ関数呼び出しの HTTP 要求構文を示します。 この構文には、状態トークン は含まれます

成功した応答で返されるクエリ URL nextLink deltaLink には、状態トークンが含まれます。 それ以降の デルタ関数 呼び出しでは、クエリ URL を使用するか、その前にクエリ URL nextLink deltaLink を使用します。

ユーザー カレンダーのイベントのデルタ関数 (プレビュー)

指定した ユーザー カレンダー で、特定の日付/時刻以降のすべてのイベントまたはイベントにデルタ関数を適用します。

  • すべてのイベント、またはユーザーのメールボックスで指定された日付/時刻以降に開始するイベントの増分変更を取得するには、次の操作 を行います

    GET /me/events/delta 
    GET /users/{id | userPrincipalName}/events/delta 
    
    GET /me/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/events/delta?startDateTime={start_datetime}
    
  • すべてのイベント、またはユーザーの既定の予定表で指定した日付/時刻以降のイベントの増分変更 を取得するには、次の操作を行います

    GET /me/calendar/events/delta 
    GET /users/{id | userPrincipalName}/calendar/events/delta 
    
    GET /me/calendar/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendar/events/delta?startDateTime={start_datetime}
    
  • 指定したユーザー カレンダーで指定した日付/時刻以降に開始するイベント、またはすべてのイベントの増分変更 を取得するには、次の操作を行います

    GET /me/calendars/{id}/events/delta 
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta 
    
    GET /me/calendars/{id}/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta?startDateTime={start_datetime}
    
  • 指定した予定表グループと予定表で指定した日付/時刻以降に開始するイベント、またはすべてのイベントの増分変更を取得するには、次の操作 を行います

    GET /me/calendargroups/{id}/calendars/{id}/events/delta 
    GET /users/{id | userPrincipalName}/calendargroups/{id}/calendars/{id}/events/delta 
    
    GET /me/calendargroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendargroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime}
    

ユーザー カレンダーの calendarView のデルタ関数

指定した ユーザー カレンダー で、開始日と終了日時で区切られたイベントの範囲にデルタ関数を適用します。

  • ユーザーの既定の予定表の予定表ビューで増分変更 を取得するには、次の操作を行います

    GET /me/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    
  • 指定したユーザー カレンダーの予定表ビューで増分変更 を取得するには、次の操作を行います

    GET /me/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    

グループ カレンダーの calendarView のデルタ関数

  • グループの予定表の予定表ビューで増分変更 を取得するには、次の操作を行います
    GET /groups/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
    

クエリ パラメーター

変更を追跡すると、1 つ以上のデルタ関数呼び 出しのラウンドが 発生します。 任意のクエリ パラメーター ($deltatoken$skiptoken以外) を使用する場合は、最初の デルタ 要求でこれを指定する必要があります。 Microsoft Graph は、応答で提供される nextLink または deltaLink の URL のトークン部分に指定したパラメーターを自動的にエンコードします。 必要なクエリ パラメーターを前もって 1 回指定しておくだけで済みます。 以降の要求では、エンコードされた必要なパラメーターが既に URL に含まれるので、前の応答の URL をコピーして nextLink deltaLink 適用します。

クエリ パラメーター 種類 説明
startDateTime 文字列 時間範囲の開始日時は、ISO 8601 形式で表されます。例: "2019-11-08T19:00:00-08:00"。
タイム ゾーンは、パラメーター値のタイム ゾーン オフセット部分で指定され、存在する場合はヘッダーの Prefer: outlook.timezone 影響を受け取ります。 タイムゾーン オフセットが値に含まれていない場合、UTC と解釈されます。
予定表の イベントの デルタの場合は省略可能です。
calendarView のデルタ****に必要です
endDateTime 文字列 時間範囲の終了日時は、ISO 8601 形式で表されます。例: "2019-11-08T20:00:00-08:00"。
タイム ゾーンは、パラメーター値のタイム ゾーン オフセット部分で指定され、存在する場合はヘッダーの Prefer: outlook.timezone 影響を受け取ります。 タイムゾーン オフセットが値に含まれていない場合、UTC と解釈されます。
予定表のイベントのデルタ ではサポートされていません。
calendarView のデルタ****に必要です
$deltatoken string 同じカレンダー ビュー用の前の デルタ 関数呼び出しの deltaLink URL で返された 状態トークンで、その一連の変更追跡が完了したことを示します。このトークンを含む deltaLink URL 全体を、該当カレンダー ビュー用の次回の一連の変更追跡の最初の要求内に保存し、適用します。
$skiptoken string 前の デルタ 関数呼び出しの nextLink URL 内で返された 状態トークンで、同じカレンダー ビュー内に追跡されるべきさらなる変化があることを示しています。

OData クエリ パラメーター

  • calendarView のデルタ 関数呼び出しで、要求から通常取得するのと同じプロパティを返す必要 GET /calendarview があります。 これらのプロパティの $select サブセットのみを取得するには使用できません。

  • デルタ 関数 は、ユーザー カレンダー内のイベント、または calendarView のイベントに対して、次のクエリ パラメーターをサポートしません。 $expand $filter $orderby $search $select

要求ヘッダー

名前 説明
Authorization string ベアラー {トークン}。必須。
Content-Type string application/json. Required.
Prefer string odata.maxpagesize={x}.省略可能。
Prefer string outlook.timezone={Time zone string}。 省略可能な UTC は、存在しない場合と見なされます。

応答

イベントのデルタ関数 (プレビュー)

成功した場合、このメソッドは応答コードと、応答本文 200 OK のイベント コレクションを返します。 応答 の各 イベントには、パフォーマンス上の理由 から、id、type、start、end プロパティだけが含まれる。 その GET /events/{id} 後、応答からイベントを展開します。

calendarView のデルタ関数

成功した場合、このメソッドは応答コードと、応答本文 200 OK のイベント コレクションを返します。

要求から通常取得するすべてのプロパティを取得する必要 GET /calendarview があります。

calendarView の日付範囲にバインドされたデルタ関数呼び出しのラウンド内で、次の理由で 2 種類のイベントを返すデルタ呼び出 @removed しを見つける場合があります deleted

  • 日付範囲内で、以前のデルタ呼び出し以降に 削除されたイベント
  • 日付範囲 外で、前回のデルタ呼び出し以降に追加、削除、または更新されたイベント。

シナリオで必要な @removed 日付範囲の下のイベントをフィルター処理します。

例 1: 予定表内のイベントのデルタ関数 (プレビュー)

要求

次の例は、サインインしているユーザーの既定の予定表で、指定したパラメーターのオンまたは後に発生するイベントを取得する初期同期要求を示 startDateTime しています。 最初の要求には、状態トークンは含めかねない。

要求では、ヘッダー Prefer: odata.maxpagesize を使用して、各応答のイベントの最大数を 1 に制限します。 応答で a を取得するまで、返されるクエリを使用して関数 delta @odata.nextLink の呼び @odata.deltaLink 出しを続行します。

GET https://graph.microsoft.com/beta/me/calendar/events/delta?startDateTime=2020-06-12T00:00:00Z

Prefer: odata.maxpagesize=1

応答

要求が成功した場合、応答には状態トークン @ (odata.nextLink 応答ヘッダーの skipToken) または deltaToken @ (odata.deltaLink 応答ヘッダー) が含まれます。 それぞれ、ラウンドを続行するか、そのラウンドのすべての変更を取得したかどうかを示します。

以下の応答は @ 、odata.nextLink 応答ヘッダーの skipToken を示しています。

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.nextLink":"https://graph.microsoft.com/beta/me/calendar/events/delta?$skiptoken=R0usmcdvmMu7jxWP8",
  "value": [
    { 
      "id": " AAMkADllMWMwNDkzLWJlY2EtNDIyOS1iZjAA=", 
      "type": "singleInstance", 
      "start": {  
             "DateTime": "2020-02-19T10:00:00.0000000",  
             "TimeZone": "UTC" 
         },  
       "end": {  
                "DateTime": "2020-02-19T11:00:00.0000000",  
                "TimeZone": "UTC"        
          }  
        } 
  ]
}

例 2: calendarView のデルタ関数

要求

次の例は 、calendarView で示される日付の範囲内で、サインインしているユーザーの指定された予定表内のイベントを取得する初期同期要求を示しています。 最初の要求には、状態トークンは含めかねない。

要求では、ヘッダー Prefer: odata.maxpagesize を使用して、各応答のイベントの最大数を 2 に制限します。 返されたクエリを使用して関数を呼び出し続け、その予定表ビューのすべてのイベントと delta @odata.nextLink 応答の a @odata.deltaLink を取得します。

GET https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarview/delta?startDateTime=2020-06-01T00:00:00Z&endDateTime=2020-06-10T00:00:00Z

Prefer: odata.maxpagesize=2

応答

要求が成功した場合、応答には状態トークン @ (odata.nextLink 応答ヘッダーの skipToken) または deltaToken @ (odata.deltaLink 応答ヘッダー) が含まれます。 それぞれ、ラウンドを続行するか、そのラウンドのすべての変更を取得したかどうかを示します。

以下の応答は @ 、odata.nextLink 応答ヘッダーの skipToken を示しています。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(event)",
    "@odata.nextLink": "https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarview/delta?$skiptoken=R0usmcdvmMu7jxWP8",
    "value": [
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTgw==\"",
            "createdDateTime": "2020-06-16T04:05:43.8668791Z",
            "lastModifiedDateTime": "2020-06-16T04:08:27.354268Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTgw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E00800000000F088B8B95843D601000000000000000010000000165CD5547CFC9545B6492B261750B48C",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": false,
            "hasAttachments": false,
            "subject": "Summer party",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1QAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1QAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-02T20:00:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-02T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.onmicrosoft.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTfw==\"",
            "createdDateTime": "2020-06-16T04:06:18.386713Z",
            "lastModifiedDateTime": "2020-06-16T04:08:19.5694048Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTfw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E0080000000060074BC55843D6010000000000000000100000002D33A89F36B10D43A12FD990B62858B2",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": true,
            "hasAttachments": false,
            "subject": "Summer party part 2",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1RAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1RAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-04T19:30:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-04T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.onmicrosoft.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.onmicrosoft.com"
                }
            }
        }
    ]
}

関連項目