View Single Post
Hi bugvi...

I had this script working in ML, and then it just stopped. I don't think I changed anything. I'm not getting anything into my OF inbox or any Growl notifications.

I tried using the script you posted exactly (with the fixed myWFContext) with no success.

Code:
(*
Waiting For Mails to OmniFocus Script
by simplicityisbliss.com, Sven Fechner
MailTags project and due date compatibility added by Scott Morrison, Indev Software

Based on an Outbox Rule (Mail Act-On) in Mail.app this script adds specific messages
to the OmniFocus Inbox with the waiting for context

MailTags is required to automatically set the project and the due date.

Mail Act-On (www.indev.ca) is required to define the Outbox Rule to only
create tasks for those outgoing emails that are to be tracked in OmniFocus

A sample Outbox rule may be
if MailTags Tickle Date is After 0 days today 
Run Apple Script: [ThisAppleScript]


The script uses Growl from the App Store for feedback notification if it is installed and running

*)


--!! EDIT THE PROPERTIES BELOW TO MEET YOUR NEEDS !!--

-- Do you want the actualy mail body to be added to the notes section of the OmniFocus task?
-- Set to 'true' is or 'false' if no
property mailBody : true

-- Text between mail recipient (the person you are waiting for to come back) and the email subject
property MidFix : "to follow up re:"

-- Name of your Waiting For context in OmniFocus
property myWFContext : "Waiting for ..."

-- Default start time
property timeStart : "06:00:00"

-- Default due time
property timeDue : "14:00:00"

-- Default start to due date interval, in days
property dateInterval : "3"

-- !! STOP EDITING HERE IF NOT FAMILAR WITH APPLESCRIPT !! --

--Configuration for Growl messages 
property GrowlRun : true
property scriptName : "Waiting For Mails to OmniFocus"
property notifySuccess : "Success Notification"
property notifyFail : "Failed Notification"
property titleSuccess : "Waiting For Mail added"
property titleFail : "Waiting For Mail to OmniFocus FAILED"
property txtSuccess : " added to OmniFocus successfully"
property txtFail : " to OmniFocus to add successfully"
property txtIcon : "OmniFocus"

using terms from application "Mail"
	
	on perform mail action with messages theData
		--Check if Growl is running
		tell application "System Events" to set GrowlRun to (count of (every process whose name is "Growl")) > 0
		
		--Setup Growl
		if GrowlRun then tell application "Growl" to register as application scriptName all notifications {notifySuccess, notifyFail} default notifications {notifySuccess, notifyFail} icon of application txtIcon
		
		--Get going
		-- tell application "Mail"
		-- set theMessages to |SelectedMessages| of theData --Extract the messages from the rule
		-- repeat with theMessage in theMessages
		repeat with theMessage in theData
			set theSubject to subject of theMessage
			set theRecipient to name of to recipient of theMessage
			set theMessageID to urlencode(the message id of theMessage) of me
			set theStartDate to ""
			set theDueDate to ""
			
			try
				using terms from application "MailTagsHelper"
					set theStartDate to (due date of theMessage) as date
					set theStartDate to my setStartDate(theStartDate)
					set theDueDate to theStartDate + dateInterval * days
					set theDueDate to my setDueDate(theDueDate)
				end using terms from
			on error theError
				
			end try
			
			-- Check if there is one or more recipients
			try
				if (count of theRecipient) > 1 then
					set theRecipientName to (item 1 of theRecipient & (ASCII character 202) & "and" & (ASCII character 202) & ((count of theRecipient) - 1) as string) & (ASCII character 202) & "more"
				else
					set theRecipientName to item 1 of theRecipient
				end if
				
				set theTaskTitle to theRecipientName & (ASCII character 202) & MidFix & (ASCII character 202) & theSubject
				set messageURL to "Created from message://%3C" & (theMessageID) & "%3E"
				set theBody to messageURL
				if mailBody then set theBody to theBody & return & return & the content of theMessage
				
				-- Add waiting for context task to OmniFocus
				tell application "OmniFocus"
					tell the default document
						set theContext to context "myWFContext"
						
						
						if theStartDate is not "" then
							set theTask to make new inbox task with properties {name:theTaskTitle, note:theBody, context:theContext, start date:theStartDate, due date:theDueDate}
						else
							set theTask to make new inbox task with properties {name:theTaskTitle, note:theBody, context:theContext}
							
						end if
						if myProject is not null then
							set theProject to project myProject
							move theTask to end of tasks of theProject
							
						end if
					end tell
				end tell
				
			on error theError
				do shell script "logger -t outboxrule 'Error : " & theError & "' "
			end try
			
			
			my GrowlSuccess("Mail: " & theSubject)
		end repeat
		--	end tell
		
		-- end perform_mail_action
		
	end perform mail action with messages
	
	on GrowlSuccess(theMessage)
		if GrowlRun then tell application "Growl" to notify with name notifySuccess title titleSuccess description theMessage & txtSuccess application name scriptName
	end GrowlSuccess
	
	on urlencode(theText)
		set theTextEnc to ""
		repeat with eachChar in characters of theText
			set useChar to eachChar
			set eachCharNum to ASCII number of eachChar
			if eachCharNum = 32 then
				set useChar to "+"
			else if (eachCharNum ≠ 42) and (eachCharNum ≠ 95) and (eachCharNum < 45 or eachCharNum > 46) and (eachCharNum < 48 or eachCharNum > 57) and (eachCharNum < 65 or eachCharNum > 90) and (eachCharNum < 97 or eachCharNum > 122) then
				set firstDig to round (eachCharNum / 16) rounding down
				set secondDig to eachCharNum mod 16
				if firstDig > 9 then
					set aNum to firstDig + 55
					set firstDig to ASCII character aNum
				end if
				if secondDig > 9 then
					set aNum to secondDig + 55
					set secondDig to ASCII character aNum
				end if
				set numHex to ("%" & (firstDig as string) & (secondDig as string)) as string
				set useChar to numHex
			end if
			set theTextEnc to theTextEnc & useChar as string
		end repeat
		return theTextEnc
	end urlencode
	
	on setStartDate(theStartDate)
		set theDate to (date string of theStartDate)
		set newDate to the (date (theDate & " " & timeStart))
		return newDate
	end setStartDate
	
	on setDueDate(theDueDate)
		set theDate to (date string of theDueDate)
		set newDate to the (date (theDate & " " & timeDue))
		return newDate
	end setDueDate
	
end using terms from
Is this the script you have working?

Thanks,

Brett