mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
80 lines
2.7 KiB
AppleScript
80 lines
2.7 KiB
AppleScript
(*
|
|
Count Messages in All Mailboxes
|
|
|
|
Copyright 2002-2012 Apple Inc. All rights reserved.
|
|
|
|
You may incorporate this Apple sample code into your program(s) without
|
|
restriction. This Apple sample code has been provided "AS IS" and the
|
|
responsibility for its operation is yours. You are not permitted to
|
|
redistribute this Apple sample code as "Apple sample code" after having
|
|
made changes. If you're going to redistribute the code, we require
|
|
that you make it clear that the code was descended from Apple sample
|
|
code, but that you've made changes.
|
|
*)
|
|
|
|
(*
|
|
This script goes through each mailbox, gets the total message count and
|
|
the unread count, then displays the final output in a new email message.
|
|
*)
|
|
|
|
tell application "Mail"
|
|
set localMailboxes to every mailbox
|
|
if (count of localMailboxes) is greater than 0 then
|
|
set messageCountDisplay to "Local mailboxes (On My Mac)" & return & my getMessageCountsForMailboxes(localMailboxes)
|
|
else
|
|
set messageCountDisplay to ""
|
|
end if
|
|
|
|
set everyAccount to every account
|
|
repeat with eachAccount in everyAccount
|
|
set accountMailboxes to every mailbox of eachAccount
|
|
if (count of accountMailboxes) is greater than 0 then
|
|
set messageCountDisplay to messageCountDisplay & return & "Mailboxes for Account: " & name of eachAccount & return & my getMessageCountsForMailboxes(accountMailboxes)
|
|
end if
|
|
end repeat
|
|
|
|
set outputMessage to make new outgoing message with properties {content:messageCountDisplay, subject:"Message counts for all my mailboxes", visible:true}
|
|
tell outputMessage
|
|
set font to "Courier"
|
|
set size to 12
|
|
end tell
|
|
end tell
|
|
|
|
on getMessageCountsForMailboxes(theMailboxes)
|
|
-- (list of mailboxes)
|
|
-- returns string
|
|
|
|
set displayString to ""
|
|
|
|
tell application "Mail"
|
|
repeat with eachMailbox in theMailboxes
|
|
set mailboxName to name of eachMailbox
|
|
set messageCount to (count of (messages of eachMailbox)) as string
|
|
set unreadCount to unread count of eachMailbox as string
|
|
|
|
set displayString to displayString & " " & my padString(mailboxName, 40) & " " & messageCount & " (" & unreadCount & " unread)" & return
|
|
end repeat
|
|
end tell
|
|
|
|
return displayString
|
|
end getMessageCountsForMailboxes
|
|
|
|
on padString(theString, fieldLength)
|
|
-- (string, integer)
|
|
-- returns string
|
|
|
|
set stringLength to length of theString
|
|
|
|
if stringLength is greater than fieldLength then
|
|
set paddedString to (text from character 1 to character (fieldLength - 3) of theString) & "..."
|
|
else -- stringLength is less than or equal to fieldLength
|
|
set paddedString to theString
|
|
|
|
set paddingLength to fieldLength - stringLength
|
|
repeat paddingLength times
|
|
set paddedString to paddedString & space
|
|
end repeat
|
|
end if
|
|
|
|
return paddedString
|
|
end padString |