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

 
Setting nested context from script Thread Tools Search this Thread Display Modes
Are there any examples of how to set a nested context from the scripting interface? E.g., Work->Email

Thanks,
Don
 
You need a reference to the corresponding element in the contexts tree of the document

One way would be something like:

Code:
tell application "OmniFocus"

	set oContextList to contexts of first document
	
	set oContext to my FindContext("Email", oContextList)
	
	--    ...
	-- Assume creation of, or reference to an Omnifocus task (oTask) somewhere here
	--    ...
	
	set context of oTask to oContext

end tell


-- get a pointer to any defined context with this name
on FindContext(strName, oContexts)
	tell application "OmniFocus"
		ignoring case
			repeat with oContext in oContexts
				-- set strContextName to name of oContext
				if (name of oContext) = strName then
					return oContext
				else
					set oSubContexts to contexts of oContext
					if (count of (oSubContexts)) > 0 then
						set ContextFound to my FindContext(strName, oSubContexts)
						-- Check whether a context has in fact been found
						try
							set SomeName to name of ContextFound
							return ContextFound
						end try
					end if
				end if
			end repeat
		end ignoring
	end tell
end FindContext
 
Probably quicker, in fact, to use the verb "Complete" which is provided in the Omnifocus applescript dictionary, and which will find nested contexts directly.

Code:
tell application "OmniFocus"
	tell first document
		set oTask to make new inbox task with properties {name:"Testing"}
		
		try
			set context of oTask to my FindContext("Email")
		end try
	end tell
end tell


on FindContext(strContext)
	tell application "OmniFocus"
		tell first document
			set oContextList to complete strContext as context maximum matches 1
			if (oContextList is {}) then
			else
				return context id (id of item 1 of oContextList)
			end if
		end tell
	end tell
end FindContext
 
Finally, if you had two nested contexts with the same name, e.g.
Work > Email
and
Home > Email
you could specify the particular path by using a colon as a separator.
For example, using the FindContext() function defined in the previous post:

Code:
try
    set context of oTask to my FindContext("Work:Email")
end try
 
I would like to use Applescript to add a task with nested contexts (a task with the context people:keith). I have been unable to discover how to do this.

Any help would be appreciated.
 
Menza, I'm going to move your post to an existing thread which has the info you're looking for. Responding in the thread you created before I do that so you get any notifications you signed up for.
 
 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
setting project + context via script (modifying a DEVONthink script) bernd OmniFocus Extras 2 2012-09-08 01:10 PM
Nested context view calumma OmniFocus for iPad 1 2011-08-16 04:56 PM
Nested context/project separator constructor_trurl OmniFocus for iPad 2 2011-05-28 12:42 PM
Nested On-hold Context + On Hold Context Filter: expected results? ringods OmniFocus 1 for Mac 9 2010-10-21 07:51 PM
Creating a New Nested Context SpiralOcean OmniFocus 1 for Mac 8 2007-07-18 08:55 PM


All times are GMT -8. The time now is 10:23 AM.


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