使用AppleScript和mdfind通过电子邮件搜索Outlook联系人

时间:2013-07-09 21:00:35

标签: macos applescript spotlight outlook-2011

是否有更有效的方法来确定联系人是否不存在:

set theAddress to "foo@bar.com"

set found to false

repeat with aContact in contacts

  if email addresses of aContact contains theAddress then
    set found to true
    exit repeat
  end if

end repeat

if not found then
  ...
end if

如果找不到新联系人(并返回true),则会创建新联系人:

set found to open contact email address "foo@bar.com"

**编辑**

Search Outlook contacts by category建议我应该可以使用Spotlight查询执行此操作:

-- the address to be found
set theEmailAddress to "foobar@acme.com"

-- search identity folder
set currentIdentityFolder to quoted form of POSIX path of (current identity folder as string)

--perform Spotlight query
set theContacts to words of (do shell script "mdfind -onlyin " & currentIdentityFolder & "  'kMDItemContentType == com.microsoft.outlook14.contact && [metadata element that represents an email address] == " & theEmailAddress & "' | xargs -I % mdls -name com_microsoft_outlook_recordID '%' | cut -d'=' -f2 | sort -u | paste -s -")

-- process results
...

代表联系人电子邮件地址的元数据元素是什么?

1 个答案:

答案 0 :(得分:0)

您正在寻找的元数据元素是kMDItemEmailAddresses - 您可以在Apple's developer library找到更多内容,但我承认需要大量搜索才能找到它。

对我有用的Shell命令(用AppleScript包装它是读者的练习):

mdfind 'kMDItemContentType == com.microsoft.outlook14.contact && kMDItemEmailAddresses == "user@example.com"'