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 |