2013-07-22 1 views
1

나는 MS Outlook과 연결된 데스크톱 응용 프로그램을 만들기 위해 tidesdk를 사용하고 있습니다. 앱이 잘 작동하지만 ...Ruby에서 Outlook의 모든 연락처 찾기

나는 Outlook에서 연락처를 얻을 때 이것을 사용합니다.

def getContacts() 

     #ouverture de l'application outlook 
     begin 
      application = WIN32OLE.new('Outlook.Application') 
     rescue Exception=>e 
      alert("An error occurred while opening outlook, no contacts will be loaded"); 
      return false 
     end 

     mapi = application.GetNameSpace('MAPI') 

     contacts = mapi.GetDefaultFolder(10).Items 
     contacts.each do |contact| 

      begin 
       puts contact.FullName 
       puts contact.Email1Address 
       puts contact.BusinessTelephoneNumber 
       addContactApp(contact.FullName, contact.Email1Address) 
      rescue Exception=>e 
       alert("An error occurred while loading contacts"); 
      end 
     end 
    end 

너무 작업 ...하지만 난 내 연락처 목록에 하나 개 이상의 폴더가 있고, 나는 MS Outlook의 모든 폴더에서 모든 연락처를 좀하고 싶습니다있어 그. 모든 연락처 폴더를 가져올 수 있습니까?

답변

2

Namespace.Folders 컬렉션으로 시작하고 MAPIFolder.DefaultItemType 속성을 검사하여 각 폴더와 그 하위 폴더 (MAPIFolder.Folders)를 반복적으로 처리하십시오.

0

답변에 대한 Thx !! 나는 이것을 시도하고 잘 작동 중!

mapi = application.GetNameSpace('MAPI') 
     contacts_all_folders = mapi.GetDefaultFolder(10).Folders 
     contacts_all_folders.each do |folder|   
      var myfolder = mapi.GetDefaultFolder(10).Folders(folder.Name).Items 
      myfolder.each do |contact| 
       begin 
        puts contact.FullName 
        puts contact.Email1Address 
        puts contact.BusinessTelephoneNumber 
        addContactApp(contact.FullName, contact.Email1Address) 
       rescue Exception=>e 
        alert("An error occurred while loading contacts "+e); 
       end 
      end 
     end 
1

이것은 내가 염두에 두었던 것만은 아닙니다. 기본 연락처 폴더의 하위 폴더에서만 항목을 처리하고 있습니다. 받은 편지함 또는 연락처 폴더와 동일한 수준의 연락처가있는 폴더는 처리되지 않습니다. Namespace.Folders로 시작하고 DefaultItemType 속성을 확인하여 연락처 폴더 만 처리해야합니다. 두 번째로, 당신은 당신이 접촉 만한다고 가정하고 있습니다. 배포 목록이있는 경우 DistListItem 개체가 FullName/Email1Address/등을 지원하지 않으므로 코드에서 오류가 발생합니다. 속성. Class 속성 (모든 OOM 개체에 의해 노출 됨)이 40 (OlObjectClass.olContact)인지 확인합니다.

+0

팁을 만들려고 노력할 것입니다. 모든 폴더를 확인하는 것이 내 마음에 없었습니다 !! 고마워 ! – Zuhn