Mail.appで未読メールを取得するAppleScriptです。
まず、「未読メール」とは何かという話があります。未読メールとは、「まだ読んでいないメール」のことです。つまり、すべてのメッセージに未読/既読のフラグが用意されています。
極論すれば、すべてのメッセージの未読/既読状態を調べる必要があるわけですが、さすがにそれだと実用性がいまひとつなので、メールフォルダごとに未読メッセージのカウントが求められるようになっています。
一般的に「未読メール」といった場合、サブフォルダに仕分けしたメールの未読件数ではなく、受信メールボックス(INBOX)に入っている未読メールをカウントすることになることでしょう。
ただし、Mail.appには複数のメールアカウントを登録できるようになっているため、受信メールボックスのうちそれぞれのアカウントに該当するものが別々に返ってくることになります。
Apple純正のアプリケーションの多くはAppleScriptのオブジェクト名までローカライズされている(過剰ローカライズ)ことが多いのですが、Mail.appについては受信ボックス(=受信トレイ)は「INBOX」となっており、その他のボックスについても(ゴミ箱とか)ローカライズされていません。
画面上の表記 | AppleScript上で指定する場合の名称 |
受信 | INBOX |
VIP | —- |
フラグ付き | —- |
下書き | Drafts |
送信済み | Sent Messages |
迷惑メール | Junk |
ゴミ箱 | Deleted Messages |
アーカイブ | Archive |
AppleScript名:メールアカウント名の一覧を取得 |
tell application "Mail" set nameList to name of every account end tell –> {"iCloud", "maro@XXXXXXXX"} |
AppleScript名:各アカウントのINBOXフォルダの未読メールを取得する |
tell application "Mail" set tmpCount to unread count of mailbox "INBOX" of every account end tell –> {0, 0}–メールアカウントの数だけ配列要素が返ってくる |
AppleScript名:すべてのINBOXの未読メール数を合計して返す |
set aCount to countAllUnreadMessages() –> 0 on countAllUnreadMessages() tell application "Mail" set aCount to count every account set totalUnreadCount to 0 repeat with i from 1 to aCount set tmpCount to unread count of mailbox "INBOX" of account i set totalUnreadCount to totalUnreadCount + tmpCount end repeat end tell return totalUnreadCount end countAllUnreadMessages |
More from my site
(Visited 172 times, 1 visits today)