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]>

Reply via email to