View Single Post
Using the select command in applescript for OmniFocus 1.6 is not easy. For details, see:
http://forums.omnigroup.com/showthread.php?t=11610

OFSelectAny() makes selecting things easy, just pass it a task, project, list of items, IDs of items, etc.
See the next post for testing code which shows how to use OFSelectAny()

Code:
(* 
OFSelectAny(), code to select items in OmniFocus.
By David Amis, version 4/8/2009
	
Using OFSelectAny()
	Used to select just about anything in the front window.
	Currenty only tested in planning mode.
	Pass any of the following to OFSelectAny():	
		Sidebar items:
			sidebar
			inbox
			library
			quick entry tree (not tested)
			section (not tested)
			folder
			project
			
		Content items:
			task
			inbox task
			group
			available task (not tested)
			remaining task (not tested)
		
		by ID, i.e. OFelectAny("pbV93_WpDMx"):
			project ID (text)
			task ID (text)
			
		List of any of the above
		Nothing: OFSelectAny({})

		Note: Selects parent item in sidebar for a given content item.
*)
on OFSelectAny(selectItems)
	-- checks to see if we are processing a list, iterates if necessary
	local selectItem, extendSelection
	
	if class of selectItems is list then
		if (count of selectItems) is 0 then -- select nothing in the sidebar
			tell application "OmniFocus"
				tell default document
					tell front document window
						tell sidebar -- if Inbox, Library, Folder, Project, or SAL
							select {}
						end tell
					end tell
				end tell
			end tell
		end if
		set extendSelection to false
		repeat with selectItem in selectItems
			OFSelectOne(selectItem, extendSelection)
			set extendSelection to true
		end repeat
	else
		OFSelectOne(selectItems, false)
	end if
end OFSelectAny


on OFSelectOne(selectItem, extendSelection)
	local itemClass, textConvertFailed, containingProject
	
	tell application "OmniFocus"
		tell default document
			set itemClass to class of selectItem
			if itemClass is rich text then
				set textConvertFailed to true
				try
					set selectItem to task id selectItem
					set textConvertFailed to false
				end try
				if textConvertFailed then
					try
						set selectItem to project id selectItem
						set textConvertFailed to false
					end try
				end if
				if textConvertFailed then
					error "OFSelectOne:Couldn't find item ID:" & selectItem
				end if
				set itemClass to class of selectItem
			end if
			
			if itemClass is task then
				set containingProject to containing project of selectItem
				tell front document window
					tell sidebar
						select {containingProject} extending extendSelection
					end tell
					tell content
						select {selectItem} extending extendSelection
						set selected to true -- bug in OmniFocus 1.6: doesn't work
					end tell
				end tell
			else if itemClass is inbox task then
				tell front document window
					tell sidebar
						select inbox extending extendSelection
					end tell
					tell content
						select {selectItem} extending extendSelection
						set selected to true -- bug in OmniFocus 1.6: doesn't work
					end tell
				end tell
			else --Not needed: if (itemClass is project) or (itemClass is tree) or (itemClass is sidebar tree) then
				tell front document window
					tell sidebar
						select {selectItem} extending extendSelection
					end tell
				end tell
			end if
		end tell
	end tell
end OFSelectOne