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 |