How could I setup a keyboard shortcut for Mail.app in OSX Lion so an email in the inbox, which is still unread, when I use this shortcut is moved automatically to some other previously defined folder?
Macos – Shortcut for moving an email to another folder in Mail.app
apple-mailapplescriptkeyboard shortcutsmacososx lion
Related Solutions
Unfortunately, I can only offer workarounds...
You can deselect all messages e.g. by clicking the empty area if the list doesn't fill all vertical space, then press
ArrowUp
to select the last messageArrowDown
to select the first message
To get the last message, press Cmd-A, Shift-ArrowUp, ArrowDown
.
If you don't use Mail's full screen mode, you can do the following:
Open Automator and create a new Service that receives no input in Mail. From the Utilities library, add a Run AppleScript action by double-clicking. Then use the following script code:
on run {input, parameters}
tell application "System Events"
tell application "System Events"
tell application process "Mail"
select first row of table 1 of scroll area 1 of first group of second splitter group of first splitter group of first window
end tell
end tell
end tell
end run
This script has been developed for the new three-column view. If you use the classic pre-Lion view, remove "of first group
" from that script.
Save as Select first row and assign a keyboard shortcut, e.g. Option-UpArrow
, in System Preferences » Keyboard » Keyboard Shortcuts » Services.
Create a new Service and repeat this, but replace first row
by last row
and name it Select last row.
These services will only be available in Mail, and select the first and last row respectively when you press the assigned keyboard shortcuts.
An alternative AppleScript, that works even in full screen mode and doesn't require the Accessibility API (UI scripting):
on run {input, parameters}
tell application "Mail" to set selected messages of first message viewer to last item of messages of first message viewer
end run
Replace last item
by first item
for the first list element. Again, create two Services and assign keyboard shortcuts.
If you are in threaded view, select View » Expand all Conversations first, as single messages that are part of a thread cannot be selected, and it cannot easily be determined which messages belong to a thread.
The alternative script below will select the bottom-most non-threaded message in the list, bounded by 50 attempts to not run forever:
on run {input, parameters}
tell application "Mail"
set cnt to number of items of messages of first message viewer
set lastitem to item cnt of messages of first message viewer
set selected messages of first message viewer to lastitem
set offst to 0
repeat while selected messages of first message viewer = missing value and offst is less than 50
set offst to offst + 1
set lastitem to item (cnt - offst) of messages of first message viewer
set selected messages of first message viewer to lastitem
end repeat
offst
end tell
end run
Best Answer
Open up Automator and create a new Service. Set it to receive "no input", then drag Run AppleScript from the left pane to the right.
Paste the following script — note that you have to change
my-account
to the actual name of the account where your source and destination mailboxes are*. Also, changedestination
to the name of the destination mailbox under the specified account.If you only want it to affect the general inbox:
Save this service. Then, under System Preferences » Keyboard » Keyboard Shortcuts, create a new keyboard shortcut for this service.
And you're done.
* You can find out the account name by going to Mail's preferences, then under Accounts, see the Description line.