View Single Post

I've modified the basic AppleScript that comes with OmniFocus so that it pulls the Jott message out of the e-mail. It assumes that a single message is a single task. I even included a link back to the original e-mail. However, the link I put into the note doesn't work quite right.

Does anyone know of a way to put a link into a note processed by "parse tasks"? I include something like "Jott message: message://<>", which is the correct format for the link, but it doesn't automatically appear as a link. Worse yet, when I manually type a space after it, OmniFocus creates two links: "message://" and "". It seems to view the "<" as a separator (which may be correct from an RFC standpoint).

If I instead send the text "Jott message: <message://<>>", I manage to get the "<" included, but it also includes the first "<". The link becomes: "<message://<>".

The script is below if you'd like to try it out.

. John
-- Derived from work that is copyright 2007 The Omni Group. All rights reserved.
-- Modified to work specifically with Jott messages.

using terms from application "Mail"
-- Trims "foo <>" down to ""
on trim_address(theAddress)
set AppleScript's text item delimiters to "<"
set WithoutPrefix to item 2 of theAddress's text items
set AppleScript's text item delimiters to ">"
set MyResult to item 1 of WithoutPrefix's text items
on error
set MyResult to theAddress
end try
set AppleScript's text item delimiters to {""} --> restore delimiters to default value
return MyResult
end trim_address

on process_message(theMessage)
set theContent to content of theMessage
set messageStart to (offset of "Jott:" in theContent) + 6
set messageEnd to (offset of "Listen" in theContent) - 2
set theSubject to text messageStart through messageEnd of theContent
set theText to theSubject & return & "Jott message: message://<" & message id of theMessage & ">"
tell application "OmniFocus"
tell default document
parse tasks with transport text theText with as single task
end tell
end tell
end process_message

on perform mail action with messages theMessages
set theMessageCount to count of theMessages
repeat with theMessageIndex from 1 to theMessageCount
my process_message(item theMessageIndex of theMessages)
end repeat
on error m number n
tell application "OmniFocus"
log "Exception in Mail action: (" & n & ") " & m
end tell
end try
end perform mail action with messages
end using terms from