There are two main reasons for this revision:
* To alert users that text will not import for some rich text
messages with attachments. In these cases, AppleScript's "content of
message" operator returns only variants of "??". The suggested work-
around is to forward the message to yourself after deleting the
attachments.
* Version 16 gave an uninformative Applescript Error Message if no
messages were selected. This has been fixed.
Other changes:
* The name-content separator in Comments is changed form "___" to
"---". This, to my eye at least, makes the Comments line more readable.
* Some typos are corrected and the code is tweaked.
* The notes are revised. Please read them.
Script Follows below next line:
________________________________________________________________________
______
(*
enhanced script to pipe selected Apple Mail messages to Yojimbo notes
Author: Steve Samuels ([EMAIL PROTECTED])
File: yojimbo17.txt
PipeMailtoYojimbo.scpt
Version : 17
Date: 2007/04/13
Besides importing messages, the script:
* Adds to message Comments:
1) the date sent (yyyy/mm/dd)
2) the name or address of sender or recipient
3) the first 60 characters of the message itself it, after removing
returns, tabs, and most extra spaces.
(The number of characters can be reset in Script Editor.)
* Adds tags: "email" & either "in" or "out"
After running the script, a Comment will look something like:
"2007/04/08 <: NYTimes.com _Your subscription is up soon. Please
rene" (an incoming message)
or
"2007/04/09 >: Sam _I can't believe that you won the
lottery" (an outgoing message)
*************************************************************
MAJOR ISSUE: THE MESSAGES OF CERTAIN RICH TEXT DOCUMENTS WITH
ATTACHMENTS WILL NOT IMPORT. THE MESSAGE CONTENT WILL SHOW AS "???"
OR SOMETHING LIKE IT. IF THIS OCCURS, FORWARD THE MESSAGE TO YOURSELF
WITHOUT ATTACHMENTS.
*************************************************************
Notes:
1. Graphics are removed and shown as question marks, e.g. "??"
2. A message is classified as outgoing if the sender's address
matches one of the user's addresses. If an account has been deleted,
there is no address to match, and all messages in the account will be
classified as incoming. To fix this behavior, create and inactivate a
dummy account. Only the email address must be correct; the other
settings are irrelevant.
3. You can reset the number of characters that are added to comments
from the body of the message. The setting statement appears just
after the "on run" command at the start of the script proper. Zero is
a possible entry.
4. If you have selected messages in more than one Message Viewer, the
script transfers only those from the Viewer that was opened first.
5. Changing the font of Yojimbo's item list may make the the list
more readable. (I now use Lucinda-Grande Bold 11)
.
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
& at //www.hawkwings.net/2006/09/04/script-to-pipe-emails-into-yojimbo/
The error dialog was copied from MailToYojimbo-v1.1 by Drummond
Field, posted at
http://www.hawkwings.net/2007/02/05/email-to-yojimbo-script-with-pdf-
support
The source for the minimum function was:
http://www.macresearch.org/no_need_to_parse_an_expression
The form for the shell script was based on examples at:
http://developer.apple.com/technotes/tn2002/tn2065.html
http://developer.apple.com/documentation/OpenSource/Conceptual/
ShellScripting/RegularExpressionsUnfettered/chapter_6_section_9.html
*)
on run
--SPECIFY HOW HOW MUCH OF THE MESSAGE TO ADD TO COMMENTS. IF NONE,
SET THE NUMBER TO ZERO
set _maxcontent to 60 as integer
tell application "Yojimbo"
activate
end tell
tell application "Mail"
activate
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 3 with icon 0
return
end if
tell message viewer 1
if not (exists selected messages) then
display dialog "No message was selected" & return & "Transfer
cancelled." with title "Error..." giving up after 3 with icon 0
return
end if
set messageList to selected messages
--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 ""
set _body 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
--Get message body to add to contents
set _body to ""
set _body to _body & content of m as text
set _length to length of _body
set _shorttext to ""
if _maxcontent > 0 then
set _allow to my min(_length, _maxcontent + 20)
--allow for spaces that will be replaced
set _toomuch to get text 1 thru _allow of _body
-- Pass the message content to Perl to remove tabs, returns, & extra
spaces
--
--WARNING: DO NOT JOIN THE FOLLOWING TWO LINES! THEY CONTAIN HIDDEN
TAB & RETURN CHARACTERS.
set _text1 to do shell script "echo " & quoted form of _toomuch & " |
perl -e \"while(\\$line = <STDIN>) { \\$line =~ s/[
]+/ /g; print \\$line; }\""
--Now find the maximum length of the content to be added
set _lengthnow to length of _text1
set _most to my min(_lengthnow, _maxcontent)
set _shorttext to get text 1 through _most of _text1
set _shorttext to "---" & _shorttext
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 &
_shorttext}
add tags {"email", _tag} to aNewNoteItem
end tell
end repeat
end tell
end tell
end run
-- Function routines follow
--Set up a function to generate the body of the message (by Jim Correia)
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
--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
--Source: http://www.macresearch.org/no_need_to_parse_an_expression
on min(x, y)
if (x ≤ y) then
return x
else
return y
end if
end min
--
------------------------------------------------------------------
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]>