4

EWS のマネージ API を使用して、スケジューリング アプリケーションを Exchange カレンダーと同期しています。通常の会議はすべて正常に行われますが、定期的な予定はありません。

私のコードは次のとおりです。

itemChangeCollection = _service.SyncFolderItems(
                            new FolderId(WellKnownFolderName.Calendar,
                                         new Mailbox(Email)),
                            propertySet,
                            null,
                            Settings.Default.ExchangeSyncFetchCount,
                            SyncFolderItemsScope.NormalItems,
                            syncState);

定期的な予定も表示するには、何を変更する必要がありますか?

4

3 に答える 3

3

定期的な予定のインスタンスは、ストア内の「実際の」アイテムではありません。これらは、カレンダー ビューと時間枠で検索を実行するたびに計算されるという意味で仮想的です。

定期的な予定を見つける唯一の方法は、FindItems メソッドを使用することです。

于 2011-06-27T09:17:41.483 に答える
2

SyncFolderItems繰り返しシリーズを再構築するために必要な情報のみを返しますが、個々の発生を展開しません。拡張オカレンスが必要な場合は、FindItemsメソッドを使用する必要があります。

ただし、再発を自分で拡張できると仮定しても、それSyncFolderItemsだけでは必要な情報がすべて得られるわけではありません。

SyncFolderItemsSingleまたはRecurringMasterAppointmentTypeのイベントのリストを返します。RecurringMaster イベントにはプロパティModifiedOccurrencesDeletedOccurrencesプロパティが含まれます。残念ながら、アイテムにModifiedOccurrencesは ItemId のみが含まれており、Item 自体は含まれていません。変更されたオカレンスのフィールドを取得するには、すべての例外を個別に解決する必要があるようです。ドキュメントから:

ModifiedOccurrencesコレクションの各 OccurrenceInfo オブジェクトには、EndItemIdOriginalStart、およびStartの4 つのプロパティが含まれています。例外項目の追加のプロパティにアクセスするには、 OccurrenceInfo.ItemIdを使用して項目にバインドする必要があります。

foreach (OccurrenceInfo item in recurringMasterItem.ModifiedOccurrences)
{
   Appointment modifiedItem = Appointment.Bind(service, item.ItemId);
   Console.WriteLine("Subject: " + modifiedItem.Subject);
}

つまり、取得したデータを使用してSyncFolderItem、時間の例外や削除された発生を含む繰り返しを拡張できますが、追加の.Bind()呼び出しで他のフィールド (つまり、概要、本文、場所など) の例外を解決する必要があります。

于 2016-11-24T13:17:14.707 に答える
0

SyncFolderItems定期的なマスター アイテムを提供しますが、それらをオカレンスに展開しません。繰り返しマスターは、すべてのアイテムの共通プロパティ、繰り返しパターン、および例外と削除のリストを保持します。これは、それらをオカレンスに展開するために必要なすべての情報です。Appointment.BindToOccurrenceオカレンス インデックスに基づいて定期的なマスターから個々のオカレンスのプロパティをバインドするために呼び出すことになっていますが。欠点は、これが発生するたびに EWS 呼び出しを行うことです。

于 2016-09-30T10:24:27.533 に答える