16

カレンダー アイテムを取得するために CalendarItemType ビューを使用しています。私が気にかけているのは私が作成したものだけで、それらはすべて毎週繰り返されるアイテムであることを知っています. 個々のオカレンスを取得し、それらのいずれかから定期的なマスター アイテムを取得できますが、検索の範囲を自分のパターンに一致するアイテムだけに絞り込みたいと考えています。

FindItemType の Restriction プロパティを使用して、calenderRecurrenceId の null 定数で NotEqualTo 制限を指定しようとしました。これにより、リクエストがタイムアウトしました。これまでのところ、FindItemType を使用して繰り返しをまったく読み込むことができず、定期的なシリーズで発生するイベントを見つけたときに、後続の GetItemType 呼び出しを使用する必要があります。

これが私が始めているコードです。このコードは、Exchange 2007 と Exchange 2010 の両方で動作する必要があります。

    var findItemRequest = new FindItemType();

    findItemRequest.ParentFolderIds = new DistinguishedFolderIdType[]
    {
        new DistinguishedFolderIdType()
    };

    ((DistinguishedFolderIdType)findItemequest.ParentFolderIds[0]).Id = DistinguishedFolderIdNameType.calendar;
    findItemRequest.Traversal = ItemQueryTraversalType.Shallow;

    var itemShapeDefinition = new ItemResponseShapeType(
    {
        BaseShape = DefaultShapeNamesType.AllProperties;
    }

    findItemRequest.Item = calenderView;
    findItemRequest.ItemShape = itemShapeDefinition;

    var findItemResponse = this.esb.FindItem( findItemRequest );

また、(MSDN にあるもの以外の) 良い例の情報源を知っていれば、それを歓迎します。私は緊急時に他の人のコードを拾い、その場で Exchange Web サービスを学ぼうとしています。

4

4 に答える 4

4

誤解しているかもしれませんが、その場合はお詫び申し上げます。

CalendarView は使用しません。マスターの定期的なカレンダー アイテムだけが必要な場合は、通常の IndexedPageItemView を使用します。

CalendarView を使用して、繰り返しを個々のアイテムに展開します。ただし、CalendarView の妥協点は、開始日と終了日以外の制限が許可されていないことです。なし。

于 2011-04-24T20:56:34.697 に答える
0

必要なプロパティは RecurrenceStart プロパティだけです。EWS には制限があるため、制限内のすべてのプロパティを使用することはできません。これは期待どおりに機能します。

参照:マスターの定期的な予定を検索する

于 2013-10-11T03:19:18.413 に答える
-1

カスタム検索フィルターを作成できます。特定の startdate または isRecurring プロパティから検索する場合、最も簡単な方法があります... (SearchItems は定期的なマスターを返します)

List<SearchFilter> searchFilterCollection = new List<SearchFilter>();

        SearchFilter.IsGreaterThanOrEqualTo startDatumFilter = new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, new DateTime(2012, 9, 16));
        SearchFilter.IsEqualTo masterRecurringFilter = new SearchFilter.IsEqualTo(AppointmentSchema.IsRecurring, true);

        searchFilterCollection.Add(startDatumFilter);
        searchFilterCollection.Add(masterRecurringFilter);

        SearchFilter finalFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection);

        ItemView itemView = new ItemView(100000);
        itemView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.AppointmentType);

        FindItemsResults<Item> items = _service.FindItems(WellKnownFolderName.Calendar, finalFilter, itemView);
于 2012-09-18T09:47:06.697 に答える