2

Outlook 2011 for the Mac でカテゴリ別に連絡先を検索する方法はありますか?

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
4

1 に答える 1

1

カテゴリに関して、OL 辞書の実装にいくつかのバグ/機能があると思います-検索ステートメントは機能するはずですが、機能しないことに同意します。

これに対する 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これにより、必要な連絡先のスポットライト検索 (コマンド) が実行されます。

  • 現在のIDフォルダーのみを検索します
  • 連絡先のみを検索します
  • 「採用担当者」カテゴリの ID でマークされた連絡先のみが返されます。

mdfind コマンドの出力は、このクエリに一致するファイルのリストです。したがって、この出力は にパイプされmdls、カテゴリを含むすべてのスポットライト検索可能なフィールドがリストされます。連絡先 ID の単純なリストを AppleScript に返す必要があります。

連絡先 ID のリストは、単純な繰り返しループを使用して連絡先のリストに変換できます。

于 2013-09-17T21:26:27.677 に答える