カレンダーの予定をMicrosoftGraph APIと同期できますか?

キャプテンハイパーテキスト

Microsoft Graph APIを使用して、Outlookからカレンダーイベントを同期しようとしています。Outlook APIに関するこの記事を見ていましたodata.track-changesが、リクエストにヘッダーを追加すると、が表示されますdeltaToken。これを後のリクエストで使用して、最後の同期以降に更新または作成されたイベントのみをフェッチできます。

イベントのフェッチに成功しましたが、deltaTokenが返されません:/

これはOutlookAPIでのみサポートされていますか?グラフの応答にはPreference-Applied: odata.track-changesが含まれているので、ヘッダーを確認しています。これが私のサンプルリクエストです:

GET /v1.0/me/calendar/calendarView
    ?startDateTime=2016-09-01T00:00:00.0000000
    &endDateTime=2099-01-01T00:00:00.0000000
    HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer XXX
Prefer: odata.track-changes
Prefer: odata.maxpagesize=3  //for testing
Cache-Control: no-cache

そして私のサンプル応答:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('')/calendar/calendarView",
  "value": [
    {
      "@odata.etag": "",
      "id": "",
      "createdDateTime": "2016-08-04T14:00:25.8552351Z",
      "lastModifiedDateTime": "2016-08-25T14:43:54.9950828Z",
      "changeKey": "",
      "categories": [
        "Orange category"
      ],
      "originalStartTimeZone": "Eastern Standard Time",
      "originalEndTimeZone": "Eastern Standard Time",
      "responseStatus": {
        "response": "organizer",
        "time": "0001-01-01T00:00:00Z"
      },
      "iCalUId": "",
      "reminderMinutesBeforeStart": 15,
      "isReminderOn": true,
      "hasAttachments": false,
      "subject": "Closing on House",
      "body": {
        "contentType": "html",
        "content": ""
      },
      "bodyPreview": "",
      "importance": "normal",
      "sensitivity": "normal",
      "start": {
        "dateTime": "2016-09-08T19:30:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2016-09-08T21:30:00.0000000",
        "timeZone": "UTC"
      },
      "location": {
        "displayName": "245 E Main St",
        "address": {
          "street": "245 E Main St",
          "city": "Somewhere",
          "state": "NY",
          "countryOrRegion": "United States",
          "postalCode": ""
        }
      },
      "isAllDay": false,
      "isCancelled": false,
      "isOrganizer": true,
      "recurrence": null,
      "responseRequested": true,
      "seriesMasterId": null,
      "showAs": "busy",
      "type": "singleInstance",
      "attendees": [],
      "organizer": {
        "emailAddress": {
          "name": "",
          "address": ""
        }
      },
      "webLink": "https://outlook.office365.com/owa/?ItemID="
    },
    {
      "@odata.etag": "",
      "id": "",
      "createdDateTime": "2016-08-19T18:02:39.0607411Z",
      "lastModifiedDateTime": "2016-08-19T18:04:10.548447Z",
      "changeKey": "",
      "categories": [
        "Green category"
      ],
      "originalStartTimeZone": "UTC",
      "originalEndTimeZone": "UTC",
      "responseStatus": {
        "response": "organizer",
        "time": "0001-01-01T00:00:00Z"
      },
      "iCalUId": "",
      "reminderMinutesBeforeStart": 15,
      "isReminderOn": true,
      "hasAttachments": false,
      "subject": "Moving (off work)",
      "body": {
        "contentType": "html",
        "content": ""
      },
      "bodyPreview": "",
      "importance": "normal",
      "sensitivity": "normal",
      "start": {
        "dateTime": "2016-09-10T00:00:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2016-09-13T00:00:00.0000000",
        "timeZone": "UTC"
      },
      "location": {
        "displayName": "",
        "address": {}
      },
      "isAllDay": true,
      "isCancelled": false,
      "isOrganizer": true,
      "recurrence": null,
      "responseRequested": true,
      "seriesMasterId": null,
      "showAs": "oof",
      "type": "singleInstance",
      "attendees": [],
      "organizer": {
        "emailAddress": {
          "name": "",
          "address": ""
        }
      },
      "webLink": "https://outlook.office365.com/owa/?ItemID="
    },
    {
      "@odata.etag": "",
      "id": "",
      "createdDateTime": "2016-09-13T19:05:20.8438647Z",
      "lastModifiedDateTime": "2016-09-13T19:05:22.1899702Z",
      "changeKey": "",
      "categories": [],
      "originalStartTimeZone": "America/New_York",
      "originalEndTimeZone": "America/New_York",
      "responseStatus": {
        "response": "organizer",
        "time": "0001-01-01T00:00:00Z"
      },
      "iCalUId": "",
      "reminderMinutesBeforeStart": 15,
      "isReminderOn": true,
      "hasAttachments": false,
      "subject": "Coffee Break",
      "body": {
        "contentType": "html",
        "content": ""
      },
      "bodyPreview": "",
      "importance": "normal",
      "sensitivity": "normal",
      "start": {
        "dateTime": "2016-09-15T20:15:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2016-09-15T21:15:00.0000000",
        "timeZone": "UTC"
      },
      "location": {
        "displayName": "",
        "address": {}
      },
      "isAllDay": false,
      "isCancelled": false,
      "isOrganizer": true,
      "recurrence": null,
      "responseRequested": true,
      "seriesMasterId": null,
      "showAs": "busy",
      "type": "singleInstance",
      "attendees": [],
      "organizer": {
        "emailAddress": {
          "name": "",
          "address": ""
        }
      },
      "webLink": "https://outlook.office365.com/owa/?ItemID="
    }
  ]
}

やや敏感になりそうなものは何でも編集しました。最終的に、私のLaravelアプリは、4か月前からイベントを同期し、永遠に未来へと向かおうとしています。

それを行うためのより効率的/より良い方法があれば、私は提案を受け入れます。重要な場合、これらの結果はPostmanで生成されました。これに関する助けや明確さはありがたいです。

キャプテンハイパーテキスト

私は次のようにodataフィルターを使用することになりました:

https://graph.microsoft.com/beta/me/calendar/calendarView?startDateTime=2016-05-01T00:00:00Z&endDateTime=2099-01-01T00:00:00Z&$filter=type eq 'singleInstance' and lastModifiedDateTime eq '2016-09-20T07:30:00+00:00'

これは間を予定し、すべてのカレンダーイベントフェッチする2016-05-01T00:00:00Z (May 1st, 2016, midnight, UTCと、2099-01-01T00:00:00Z (January 1st, 2099, midnight, UTC)イベントの種類がどこにあるかsingleInstance(ない定期的なイベントを)し、lastModifiedDateTime最後の同期の後にある(この例では、2016-09-20T07:30:00+00:00)。

これに関するいくつかの落とし穴:

  1. 明らかに、これはURLエンコードされていません。あなたはそれをする必要があるでしょう。
  2. lastModifiedDateTimeの例の+がに正しくエンコードされていることを確認しください。正しくエンコードされてい%2Bない場合、Graph APIはそれをスペースとして扱い、拒否します。
  3. 定期的なイベントを除外しない場合、現在から2099年までの各定期的なイベントを取得します。これは、calendarViewsではなくのリストをフェッチする性質ですevents

これをもう一度行うことができれば、おそらく戻って、Graphがサポートしている完全なカレンダー同期を行うでしょう(私は信じています)。カレンダー全体を同期したくなく、日付範囲だけを同期したかったのですが、それは運命の努力だったようです。

しかし、定期的なイベントがないにもかかわらず、それは機能します。

更新

データ同期の整合性を維持する際に遭遇した継続的な落とし穴、定期的なイベントの欠如などが原因で、この実装を破棄することになりました。代わりに、カレンダーイベントをリアルタイムでプルし、キャッシュを維持します。他の誰かが私の状況に陥った場合のアドバイスです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カレンダーで特定の期間の予定を検索します

分類Dev

カレンダーのすべての予定をループする

分類Dev

定期的な予定を別のカレンダーに移動する

分類Dev

C#でOutlookカレンダーに予定を作成する

分類Dev

共有Outlookカレンダーからの予定の解析

分類Dev

Outlookカレンダー:一部の予定のリマインダーをキャンセルする

分類Dev

MicrosoftGraphで新しいカレンダーを作成する

分類Dev

MicrosoftGraphを使用してカレンダーの新しいイベントを作成するときのNull例外

分類Dev

SAPUI5計画カレンダ-xmlビューの予定をモデルの予定にバインドできません

分類Dev

SendGrid C#でカレンダーの招待/予定としてメールを送信する

分類Dev

Javaカレンダー-day_of_weekを設定した後の日付は予測できません

分類Dev

カレンダー情報(予定など)を保存できるファイルはありますか?

分類Dev

特定のカレンダーへの予定を作成します。VBAの見通し

分類Dev

Googleカレンダーの予定を取得しようとすると、WEB_HOOKチャネルを使用できません

分類Dev

C#を使用して他の人のOutlookカレンダーに予定を作成する

分類Dev

MicrosoftGraph-カレンダーイベントにパッチを適用する際のPopAuthenticatorInvalidSignatureエラー

分類Dev

WP8ではなくWP7でカレンダーの予定を機能させる

分類Dev

ブラウザからiOSカレンダーに予定を書く

分類Dev

Google APIに挿入するときにカレンダーIDをどのように設定しますか?

分類Dev

予定/会議を作成せずに、Exchangeカレンダーで時間を「ビジー」に設定できますか?

分類Dev

MicrosoftGraphを使用してPowerBIのすべての従業員のカレンダーを呼び出すことは可能ですか?

分類Dev

Googleカレンダーの予定を別の所有者と共有するにはどうすればよいですか?

分類Dev

Kendo UIダイアグラムのデータソースをリモートAPIと同期できますか?

分類Dev

連絡先とカレンダーはどのように同期できますか?

分類Dev

予定としてカレンダーに表示されないリマインダーを設定するにはどうすればよいですか?

分類Dev

Outlookのすべての共有カレンダーからイベント(予定)を取得する方法はありますか?

分類Dev

https://graph.microsoft.com/v1.0/users/<IDカレンダー> / calendar / calendarViewを呼び出していますか?予定を返さず、予定があります

分類Dev

グーグルカレンダーAPIで「URL別その他のカレンダー」を追加することはできますか?

分類Dev

ピカデーカレンダーでカレンダーの開始日を設定できません

Related 関連記事

  1. 1

    カレンダーで特定の期間の予定を検索します

  2. 2

    カレンダーのすべての予定をループする

  3. 3

    定期的な予定を別のカレンダーに移動する

  4. 4

    C#でOutlookカレンダーに予定を作成する

  5. 5

    共有Outlookカレンダーからの予定の解析

  6. 6

    Outlookカレンダー:一部の予定のリマインダーをキャンセルする

  7. 7

    MicrosoftGraphで新しいカレンダーを作成する

  8. 8

    MicrosoftGraphを使用してカレンダーの新しいイベントを作成するときのNull例外

  9. 9

    SAPUI5計画カレンダ-xmlビューの予定をモデルの予定にバインドできません

  10. 10

    SendGrid C#でカレンダーの招待/予定としてメールを送信する

  11. 11

    Javaカレンダー-day_of_weekを設定した後の日付は予測できません

  12. 12

    カレンダー情報(予定など)を保存できるファイルはありますか?

  13. 13

    特定のカレンダーへの予定を作成します。VBAの見通し

  14. 14

    Googleカレンダーの予定を取得しようとすると、WEB_HOOKチャネルを使用できません

  15. 15

    C#を使用して他の人のOutlookカレンダーに予定を作成する

  16. 16

    MicrosoftGraph-カレンダーイベントにパッチを適用する際のPopAuthenticatorInvalidSignatureエラー

  17. 17

    WP8ではなくWP7でカレンダーの予定を機能させる

  18. 18

    ブラウザからiOSカレンダーに予定を書く

  19. 19

    Google APIに挿入するときにカレンダーIDをどのように設定しますか?

  20. 20

    予定/会議を作成せずに、Exchangeカレンダーで時間を「ビジー」に設定できますか?

  21. 21

    MicrosoftGraphを使用してPowerBIのすべての従業員のカレンダーを呼び出すことは可能ですか?

  22. 22

    Googleカレンダーの予定を別の所有者と共有するにはどうすればよいですか?

  23. 23

    Kendo UIダイアグラムのデータソースをリモートAPIと同期できますか?

  24. 24

    連絡先とカレンダーはどのように同期できますか?

  25. 25

    予定としてカレンダーに表示されないリマインダーを設定するにはどうすればよいですか?

  26. 26

    Outlookのすべての共有カレンダーからイベント(予定)を取得する方法はありますか?

  27. 27

    https://graph.microsoft.com/v1.0/users/<IDカレンダー> / calendar / calendarViewを呼び出していますか?予定を返さず、予定があります

  28. 28

    グーグルカレンダーAPIで「URL別その他のカレンダー」を追加することはできますか?

  29. 29

    ピカデーカレンダーでカレンダーの開始日を設定できません

ホットタグ

アーカイブ