The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > OmniFocus > OmniFocus Extras
FAQ Members List Calendar Search Today's Posts Mark Forums Read

AppleScript that adds Waiting For emails from (delegated tasks) to OmniFocus Thread Tools Search this Thread Display Modes
Thanks Greg...I ended up using the set time code as you suggested. I also decided to use 3 iterations of the script: 1 for start dates only, 1 for start/due dates (similar to yours), and 1 for due dates only. I'll use @WaitS, @WaitSD, & @WaitD in Mail Tags to trigger them respectively. Thanks for all the help...Brett
I recently upgraded to the App store version of OF. These scripts aren't working anymore! Is this a sandboxing issue?


Anybody have any ideas about this?
bpwhistler: It sounds like you may be running into this issue:

In short, you probably need to replace something like this:
tell application "OmniFocus"
with something like this:
tell application id "com.omnigroup.omnifocus.macappstore"
A different approach might be to rebuild the launch services database, so that it would no longer associate OmniFocus with the downloaded version, but rather the MAS version. I'm assuming here that a tell application "OmniFocus" block will direct the MAS version if the other has never been installed and launched, but don't have any way to verify it, having no MAS apps where I also have the non-MAS version. Seems crazy to have to edit a bunch of scripts!

I know Onyx and TinkerTool both have commands to rebuild the database. It's just a guess that this will fix the problem, but it might be worth trying before breaking out the editor, if you've got a bunch of scripts you'll have to edit.
Thanks Lizard and whpalmer4. I tried to edit one of my scripts as mentioned by Lizard, but found no occurrences of "com.omnigroup.omnifocus." Here is the script I'm using:
	Waiting For Mails to OmniFocus Script
	by, Sven Fechner
	MailTags project and due date compatibility added by Scott Morrison, Indev Software
	Based on an Outbox Rule (Mail Act-On) in 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 ( 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


-- 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 : "5:00:00 AM"

-- Default due time
property timeDue : "11:59:00 PM"

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


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

on perform_mail_action(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
			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 ""
				using terms from application "MailTagsScriptingSupport"
					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
				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"
					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 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}
							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

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
Whpalmer4...not really sure how to proceed as you've suggested. I'll check the programs you've mentioned and see if I can stumble my way through it. :)
Originally Posted by whpalmer4 View Post
I know Onyx and TinkerTool both have commands to rebuild the database.
Is this TinkerTool or TinkerTool System Release 2?

whpalmer...I figured out Onyx. Rebuilt my LaunchServices. Script still not functioning.
Hmm. Okay, my understanding of how the system associates apps might be incorrect. Lizard's suggestion should work, I was just hoping you could do it in a cleaner fashion.

Do you still have the old version of OmniFocus installed anywhere on your system?

By the way, you need to replace things like this:

-- Add waiting for context task to OmniFocus
				tell application "OmniFocus"

tell application id "com.omnigroup.omnifocus.macappstore"
There are some scripts that use

tell application id "com.omnigroup.omnifocus"
instead of
tell application "OmniFocus"
but either way, you need to change the tell application blocks to the form suggested by Lizard.

Last edited by whpalmer4; 2012-04-16 at 06:44 PM..
whpalmer4...I was hoping your way would work too!

No old versions of OF on my machine.

Thanks for the 'simplification' of the script change. I'm not good with AppleScript at all, and my attempts at noodling around with it tend to be unsuccessful without some guidance.


Last edited by bpwhistler; 2012-04-16 at 07:22 PM..

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
Thread Thread Starter Forum Replies Last Post
How to deal with delegated or "waiting for" actions bisimpson Applying OmniFocus 20 2013-02-27 06:52 AM
Delegated tasks? mattw OmniFocus 1 for Mac 35 2011-10-07 02:10 PM
Sync with Omnifocus on Mac adds completed tasks.. ohla313 OmniFocus for iPhone 7 2011-06-13 08:50 AM
Script to add delegated tasks from entourage to "Waiting" context in OmniFocus tarun101 OmniFocus Extras 1 2010-05-21 08:09 AM
Adding Tasks Via Send To OmniFocus Mail Rule, Mailtags, & Mail Act-On reuben OmniFocus 1 for Mac 0 2007-11-18 06:07 PM

All times are GMT -8. The time now is 04:33 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.