diff options
Diffstat (limited to 'samples/AppleScript/Count Messages in All Mailboxes.applescript')
| -rw-r--r-- | samples/AppleScript/Count Messages in All Mailboxes.applescript | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/samples/AppleScript/Count Messages in All Mailboxes.applescript b/samples/AppleScript/Count Messages in All Mailboxes.applescript new file mode 100644 index 0000000..f88199e --- /dev/null +++ b/samples/AppleScript/Count Messages in All Mailboxes.applescript @@ -0,0 +1,80 @@ +(* +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
\ No newline at end of file |
