2017-01-17 24 views
0

C#でOutlook VSTOアドインを開発しました。私はビジータイムスロットを見るために共有カレンダーから既存の予定を読む必要があります。私はすべての共有カレンダーに公開エディタのアクセス許可を持っており、非公開の予定とシームレスに連携しています。Outlookアドインから共有予定表にプライベート予定にアクセスする

私の唯一の問題はCalendarFolder.ItemsコレクションがolPrivateまたはolPersonal感度設定を持つ予定アイテムが含まれていないということです。 ビルトインのOutlookの予定表ビューには、これらのアイテムに小さなロックアイコンが表示されます。

個人の予定では開始時刻と終了時刻のみが公開されていることを理解しています。

基礎となるExchangeサーバーのバージョンでは、我々は、Outlook 2013と2016

これを引き起こす可能性がありますどのような任意のアイデアを使用して2013年のですか?

ありがとうございます。


UPDATE:

最後に、私はEWS Managed API 2.0を使用して、この問題の解決策を見つけました。

using Microsoft.Exchange.WebServices.Data; 
// ...... 
ExchangeService EWSService = new ExchangeService(); 
EWSService.Credentials = new WebCredentials("EXCHUser", "EXCHPW"); 
EWSService.Url = new Uri("https://...../EWS/Exchange.asmx"); 

Mailbox primary = new Mailbox(Tools.MainWindow.SelectedConsultant.Email); 
var calendar = Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(EWSService, 
       new FolderId(WellKnownFolderName.Calendar, primary)); 
ItemView cView = new ItemView(100); 

// Limit the properties returned to the appointment's subject, 
//      start time, end time and sensitivity. 
cView.PropertySet = new PropertySet(AppointmentSchema.Subject, 
            AppointmentSchema.Start, 
            AppointmentSchema.End, 
            AppointmentSchema.Sensitivity); 

// Filter by sensitivity and retrieve a collection of appointments by using the item view. 
String SearchFilterValue = Sensitivity.Private.ToString(); 
SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(AppointmentSchema.Sensitivity, SearchFilterValue); 
FindItemsResults<Item> appointments = calendar.FindItems(filter, cView); 
foreach (Appointment a in appointments) 
{ 
    if (a.Sensitivity == Sensitivity.Private) 
    { 
     // Do what you want with the matched item 
    } 
} 
// ...... 
+0

EWSでは、資格情報を入力する必要があります。また、オンラインメールボックスを使用しているため、データがOutlookで表示されているものと同期していない可能性があります。データはローカルに存在し、Extended MAPIまたはRedemptionでOOMをバイパスするだけで済みます。 –

+0

はい、私は知っています、ありがとうございます。私の現在の状況では、それは容認できる妥協である。 – Hudgi

答えて

1

これは仕様です。これらの予定は特別なものではなく、拡張MAPI(C++またはDelphi)を使用してプロパティにアクセスできます。 Redemptionを使用する場合(拡張MAPIをラップし、任意の言語から使用できます)、そのRDOAppointmentオブジェクト(RDOFolderから取得できます)はすべての利用可能なプロパティを返します。

OutlookSpy(IMessageボタンをクリックするか、IMAPIFolderボタンをクリックしてGetContentsTableタブから予定を開く)を使用してMAPIレベルのデータを見ることができますか?

+0

Dimitryありがとう、私はOutlookSpy(偉大な仕事)があります!いいえ、このケースではOutlookSpyを使用することはできません。なぜなら、予定表フォルダー内の項目を選択することさえできず、まったくフォーカスが得られないからです。 – Hudgi

+0

IMAPIFolderをクリックし、GetContentsTableタブに移動してそこからアポイントを開くことができます。 –

+0

ああ、はい、今私はそれを見ることができます。左側に_IPM.Appointment_として記載されています。 PR_SENSITIVITYの値は2(SENSITIVITY_PRIVATE)です。 PR_START_DATEとPR_END_DATEには意味のある値があります。 – Hudgi

関連する問題