2011-01-12 23 views
0

EWSを使用してユーザープロパティを作成し、Outlookのフィールド選択ツールに表示したいと考えています。 VBAを使用することが可能であることはわかっています。オブジェクトモデルはItem.UserPropertiesコレクションを公開しています。しかし、EWSを使用すると、Item.ExtendedPropertyにしかアクセスできません。EWSまたはEWS Managed APIを使用してユーザープロパティを作成してフィールド選択ツールに表示する方法

ExtendedPropertyの問題は、isが選択可能なユーザーのプロパティリストに表示されないことです。

当社のサーバー側アプリケーションは、Dynamics CRM Outlook Clientとうまく連携しようとしています。 CRM Outlookクライアントはカスタムプロパティを格納するためにUserPropertyを使用しており、アプリケーションはEWSでしか動作できず、ユーザープロパティを作成する方法を見つけることができません。

いくつかのサンプルコード:

ユーザプロパティ(VBAのOutlook):

薄暗いWITHEVENTS m_objApp

If Item.Class = olAppointment Then 
    Set m_objApp = Item 
End If 

Outlook.AppointmentItem

プライベートサブApplication_ItemLoad(オブジェクトとしてByValアイテム)として終了サブ

プライベートサブm_objApp_Open(ブール値としてキャンセル)

Dim oProp1 As UserProperty 
Dim oProp2 As UserProperty 

If m_objApp.UserProperties.Count = 0 Then 
    Set oProp1 = m_objApp.UserProperties.Add("crmid", olText) 
    oProp1.Value = "" 
    Set oProp2 = m_objApp.UserProperties.Add("crmLinkState", olText) 
    oProp2.Value = "0" 
    m_objApp.Save 
End If 

End Subの

拡張プロパティ(交換EWS):

 CalendarItemType item = new CalendarItemType(); 
     item.MeetingTimeZone = new TimeZoneType() { TimeZoneName = _userTimeZone }; 
     item.StartSpecified = true; 
     item.Start = GetDateFromXml(node.Value); 
     item.EndSpecified = true; 
     item.End = GetDateFromXml(node.Value); 

     List<ExtendedPropertyType> properties = new List<ExtendedPropertyType>(); 
     properties.Add(CreateExtendedProperty("crmid", pending.CrmId.Value.ToString(), MapiPropertyTypeType.String)); 
     properties.Add(CreateExtendedProperty("crmLinkState", "2", MapiPropertyTypeType.Double)); 
     item.ExtendedProperty = properties.ToArray(); 

     CreateRequest createRequest = new CreateItemType() 
      { 
       Items = new NonEmptyArrayOfAllItemsType 
       { 
        Items = new ItemType[] { item } 
       }, 
       SavedItemFolderId = new TargetFolderIdType() 
       { 
        Item = new DistinguishedFolderIdType() 
        { 
         Id = folder, 
         Mailbox = new EmailAddressType() { EmailAddress = _user.MailBox } 
        } 
       }, 
       SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType.SendToNone, 
       SendMeetingInvitationsSpecified = true 
      }; 

     CreateItemResponseType response = exchange.CreateItem(createRequest); 

    private ExtendedPropertyType CreateExtendedProperty(string name, string value, MapiPropertyTypeType type) 
    { 
     return new ExtendedPropertyType() 
     { 
      ExtendedFieldURI = new PathToExtendedFieldType() 
      { 
       PropertyName = name, 
       DistinguishedPropertySetId = DistinguishedPropertySetType.PublicStrings, 
       DistinguishedPropertySetIdSpecified = true, 
       PropertyType = type 
      }, 
      Item = value 
     }; 
    } 

同様の質問はほぼ一年前、マイクロソフトのフォーラムで尋ね、ないされていますまだ答えている。私はSOもっと成功するだろう期待していたhttp://social.technet.microsoft.com/Forums/en-NZ/exchangesvrdevelopment/thread/c4d6bbb9-ba6a-4aa4-9e39-98a52b733a8c

:)

おかげで、 Jeffry

答えて

0

私は(あなたが行うように見えた)2つの方法がある限り、あなたがpublicstringsを使用して同等であったと思いました。 MFCMAPIを使用して、生成されるものの違いを確認する方法はありますか?

+0

一部のサイトでいくつかの回答があります。 Haventはそれをテストする時間がありました。基本的にa)EWSはPUBLICSTRINGS guidを使用する必要があります。 b)関連性のあるすべてのフォルダを介してaddinループを作成し、userPropertyがコレクションに追加されていることを確認する必要があります。c)次に列ビューなどをカスタマイズできます。 – MJB

関連する問題