The last version I posted, Version 13, is faster than those previous.
Unfortunately I put it below a long response about triggers where
some may have missed it. This version is a bit shorter, but the main
change is a check that a Mail Viewer is open. I added this because I
all too often close the Viewer unintentionally.
Steve
(* Script to pipe selected Apple Mail messages to Yojimbo notes, with
dates sent, names, & tags
Version 15
2007/04/09
This script will:
1. Pipe selected multiple selected messages from Apple Mail to
Yojimbo notes.
2. Put the date sent (yyyy/mm/dd) & name or address of sender or
recipient into Comments
3. Add tags "email" and either "in" or "out"
IMPORTANT: THE YOJIMBO DATABASE MUST BE OPEN WHEN THE SCRIPT IS RUN.
After running the script, a comment will look like:
2007/04/08 <: NYTimes.com (an incoming message)
or
2007/04/09 >: Sam (an outgoing message)
Sorting on the Comments column will sort on date.
Note: If an account has been deleted, all messages to and from it
will be classified as incoming. For proper classification, create a
dummy version of the account and disable it. Only the email address
need be correct; the server settings are irrelevant.
Credits:
Based on MailtoYojimbo Applescript by Jim Correia of Bare Bones
Software
Originally posted in the Yojimbo Talk Forum: http://
www.listsearch.com/Yojimbo/Message/index.lasso?2169
The error dialogs were based on MailToYojimbo-v1.1 by Drummond
Field, posted at:
http://www.hawkwings.net/2007/02/05/email-to-yojimbo-script-with-
pdf-support
Steve Samuels
[EMAIL PROTECTED]
*)
--Set up a function to generate the body of the message
on generateMessageText(m)
tell application "Mail"
set _sender to sender of m
set _subject to subject of m
set _date to date received of m as string
set _contents to content of m
set _messageString to "From: " & _sender & return
set _messageString to _messageString & "Subject: " & _subject & return
set _messageString to _messageString & "Date: " & _date & return
set _messageString to _messageString & return & return & _contents
end tell
end generateMessageText
--Set up a second function to pass a variable which indicates whether
I sent the message or not
--
on CountSent(m)
tell application "Mail"
set _saddr to extract address from sender of m
set _ctsent to 0 as integer
repeat with _acct in accounts
if email addresses of _acct contains _saddr then
set _ctsent to _ctsent + 1 as integer
-- _ctsent counts the number of times the sender's address matches
one of mine
-- At the end of the function, the value of _ctsent will be 0 or 1
end if
end repeat
end tell
return _ctsent
end CountSent
--Main Program
on run
tell application "Mail"
if not (exists message viewer 1) then
display dialog "No Viewer Window is Open. Open one & select
messages." & return with title "Error...." giving up after 2 with icon 0
return
end if
tell message viewer 1
set messageList to selected messages
if not (exists selected messages) then
display dialog "No message was selected" & return & "Transfer
cancelled." with title "Error..." giving up after 2 with icon 0
return
end if
--Now loop through messages
repeat with m in messageList
--Initialize
set _type to ""
set _contents to ""
set _name to ""
set _person to ""
set _tag to ""
--Classify message as incoming or outgoing
set _count to my CountSent(m) as integer
if _count is 1 then
set _type to "outgoing"
else
set _type to "incoming"
end if
set _name to subject of m
set _contents to _contents & my generateMessageText(m)
--Set up date sent
set _date to date sent of m
set _yr to year of _date as string
set _month to month of _date as number
--Force month to format 'mm'
set _smon to _month as string
if _month < 10 then
set _smon to "0" & _smon
end if
--Force day to format 'dd'
set _day to day of _date as string
if day of _date < 10 then
set _day to "0" & _day
end if
-- Create date sent with yyyy/mm/dd format
set _datef to _yr & "/" & _smon & "/" & _day
--Get sender's name or address
set _sender to extract name from sender of m
--If there is no name, _sender defaults to the address
--If the message was received, set the name to the sender
-- and set a tag variable to "in"
if _type is "incoming" then
set _person to "<: " & _sender
set _tag to "in" as string
end if
--If the message was sent, get the first recipient's name, if
available, otherwise the address
if _type is "outgoing" then
set theRecipients to to recipients of m
if (exists name of item 1 of theRecipients) then
set _person to ">: " & name of item 1 of theRecipients
else
set _person to ">: " & address of item 1 of theRecipients
end if
set _tag to "out" as string
end if
---Now set up the note with body, comments, and tags.
tell application "Yojimbo"
set aNewNoteItem to make new note item with properties
{contents:_contents, name:_name, comments:_datef & " " & _person}
add tags {"email", _tag} to aNewNoteItem
end tell
end repeat
end tell
end tell
end run
--
------------------------------------------------------------------
This message is sent to you because you are subscribed to
the mailing list <[email protected]>.
To unsubscribe, send mail to: <[EMAIL PROTECTED]>
List archives: <http://www.listsearch.com/yojimbotalk.lasso>
Have a feature request, or not sure if the software's working
correctly? Please send mail to: <[EMAIL PROTECTED]>