c#
  • calendar
  • outlook
  • vsto
  • 2015-12-29 11 views 6 likes 
    6

    私は見通しのVSTOアドインを持っていると私はこのコードを使って、カレンダーの予定の一覧を取得することができる午前:、どのように私はENTRYID与えappointmentItemへの参照を取得することができ、など

    private Items GetAppointmentsInRange(Folder folder, DateTime startTime, DateTime endTime) 
        { 
         string filter = "[Start] >= '" 
             + startTime.ToString("g") 
             + "' AND [End] <= '" 
             + endTime.ToString("g") + "'"; 
         Debug.WriteLine(filter); 
         try 
         { 
          Items calItems = folder.Items; 
          calItems.IncludeRecurrences = true; 
          calItems.Sort("[Start]", Type.Missing); 
          Items restrictItems = calItems.Restrict(filter); 
          if (restrictItems.Count > 0) 
          { 
           return restrictItems; 
          } 
          else 
          { 
           return null; 
          } 
         } 
         catch 
         { 
          return null; 
         } 
        } 
    

    と私はこのappointmentitemsを介してループすることができ、私はそのシリーズの一意の識別子であると言われているentryIdを取得します。

    私は今、「クライアント側」

    上のすべておよびフィルタの検索を行うことなく、appointmentItemシリーズへの直接参照を(取得する権利のコードは何で、ENTRYID与えられ、把握しようとしています

    が、これは見通しのVSTOで可能ですか?

    +0

    EntryIDをデータベースに格納して後で使用する必要がありますか?それとも、セッションの期間中に必要なのですか? –

    +0

    @YacoubMassad - 私はEntryIdを保存しています(しかし、正直言って、私の質問に別の答えを与える方法は分かりません)。 – leora

    +0

    EntryIDにはさまざまな種類がありますが、単一のセッションにまたがることができます –

    答えて

    2

    あなたはEntryIDによってアイテム(MailItemFolderItemAppoinmentItem、...)を取得したい場合は、あなたがGetItemFromID()を使用する必要があり、この方法はで識別のMicrosoft Outlookアイテムを返します。指定されたエントリID(有効な場合)

    この機能を使用すると、Application.Sessionプロパティまたはapp.GetNamespace("MAPI")コール使用してそれを得ることができ、NameSpaceオブジェクトで提供されています:

    var app = new Microsoft.Office.Interop.Outlook.Application(); 
    ... 
    
    var ns = app.Session; // or app.GetNamespace("MAPI"); 
    
    var entryID = "<apppoinment entry id>"; 
    var appoinment = ns.GetItemFromID(entryID) as AppointmentItem; 
    

    をしかし、フォルダのIDを提供することをお勧めします。

    var entryID = "<apppoinment entry id>"; 
    var storeID = "<folder store id>"; 
    var appoinment = ns.GetItemFromID(entryID, store) as AppointmentItem; 
    

    は注意してくださいEntryIDかもしれませんアイテムを別のストアに移動すると変更されます。

    Futhermoreは、Microsoftがアイテムが移動されない場合を除き、あなたがolMeetingAcceptedまたはolMeetingTentative異なるEntryIDで新しい予定アイテムが作成され、元にRespond()メソッドを呼び出した場合の解決策は、例えば、ユニークであるEntryID性質に依存してはならないことをお勧めします除去される。名前空間オブジェクトのGetItemFromIDメソッドを使用したい

    -1

    (直感的に、これはApplication.Sessionプロパティを介してアクセスすることができます)

    あなたが取得したいからMAPIストアのストアIDが必要になります項目。

    関連する問題