2013-09-17 2 views
2

Есть ли способ поиска контактов в Outlook 2011 для Mac по категориям?Поиск контактов Outlook по категориям

tell application "Microsoft Outlook" 

    -- get the category by name 
    set theCategory to item 1 of (every category whose name = "Recruiter") 

    -- correctly displays 'Recruiter [25]' 
    display dialog (name of theCategory) & " [" & (id of theCategory) & "]" 

    -- perform the search (incorrectly, it seems) 
    set theContacts to (every contact whose (every category contains theCategory)) 

    -- should display ~100; actually displays 0 
    display dialog (count of theContacts) 

end tell 

ответ

1

Я думаю, что могут быть некоторые ошибки/особенности в реализации ПР словаря в отношении категорий - Я думаю, что ваш поиск заявление должен работу, но я согласен, что не.

Обходным путем для этого является поиск прожектора вместо этого. Это может быть даже предпочтительнее, потому что это, вероятно, быстрее, чем использование словаря OL. Короче говоря, заменить set theContacts to ... строки со следующим:

set currentIdentityFolder to quoted form of POSIX path of (current identity folder as string) 
    set theContactIDs to words of (do shell script "mdfind -onlyin " & currentIdentityFolder & " 'kMDItemContentType == com.microsoft.outlook14.contact && com_microsoft_outlook_categories == " & id of theCategory & "' | xargs -I % mdls -name com_microsoft_outlook_recordID '%' | cut -d'=' -f2 | sort -u | paste -s -") 

    set theContacts to {} 
    repeat with thisContactID in theContactIDs 
     set end of theContacts to contact id thisContactID 
    end repeat 

    -- For example display the first name of the first contact 
    display dialog first name of (item 1 of theContacts) as string 

Это сделает поиск фару (mdfind команды) для контактов, которые требуют:

  • Он будет смотреть только в текущей папке идентичности
  • Он будет смотреть только для контактов
  • Она возвращает только те контакты, которые отмечены с идентификатором категории «рекрутер»

Результат команды mdfind - это список файлов, соответствующих этому запросу. Таким образом, этот вывод передается по каналу на mdls, в котором будут перечислены все поля, доступные для поиска, включая категорию. Простой список идентификаторов контактов должен быть возвращен в applescript.

Список идентификаторов контактов затем может быть преобразован в список контактов с простым циклом повтора.

+0

+1 - Чтобы заставить ваш скрипт работать, мне пришлось использовать 'set theCategory для элемента 1 (каждая категория, имя =« Рекрутер »)' для получения объекта категории; есть ли ярлык? Связанный вопрос, запрос возвращает «Список» объектов 'ctxt'. Есть ли способ отбросить их на «контакт»? – craig

+1

Чтобы ответить на первый вопрос, я думаю, что это неизбежно, поскольку его предложения всегда будут возвращать список. В этом случае мы гарантируем, что существует только одна категория, имя которой = «Рекрутер», поэтому нам просто нужно взглянуть на пункт 1 этого списка. Также возможно, что этот список пуст (если нет категории, имя которой = «Рекрутер»), поэтому надежный код также должен защищать обороты вокруг этой возможности. –

+0

Чтобы ответить на второй вопрос, я отредактировал свой ответ. Список идентификаторов контактов можно просто перебрать, чтобы получить список контактов. –

Смежные вопросы