How to export projects list with hierarchies intact (AppleScript? Other?)


I’d like to be able to do a weekly “Project List” review, as per the GTD methodology. I find that this is hard to do on my 13" laptop, in the OmniFocus window.

For this reason, I’d like to be able to export the list of all of my projects, with their locations in a hierarchy of folders intact. This way, I can print that out and read it, reviewing the list manually as part of my weekly review.

Does anyone know how to do this? Possibly with AppleScript? I haven’t been able to find anything online.


Here’s a start: an excellent script from Veritrope that exports all projects to a sorted list within a text file. Perhaps someone can tweak it to show the enclosing folder hierarchy.

OmniFocus - Write Active Project List to Text File
October 9, 2014

Project Status, Latest Updates, and Comments Collected at:

1.02  Fix for OF2 Changes in Rich Text AppleScript
1.01  Fix for Projects not contained in folders.
1.00  Initial Release


FastScripts Installation (Optional, but recommended):
--Download and Install FastScripts from
--Copy script or an Alias to ~/Library/Scripts/Applications/NAME OF APP
--Set up your keyboard shortcut


tell application "OmniFocus"
	set list_Projects to {}
	set oDoc to default document
	set nofolder_Projects to (name of (flattened projects of oDoc where its folder is missing value and its status is active))
	set folder_Projects to (name of (flattened projects of oDoc where hidden of its folder is false and its status is active))
	set projNames to nofolder_Projects & folder_Projects
	set projects_Sorted to my simple_sort(projNames)
	set old_delim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to return
	set projects_Sorted to projects_Sorted as text
	set AppleScript's text item delimiters to old_delim
	set ExportList to "Current List of Active Projects:" & return & (current date) & return & return & projects_Sorted as Unicode text
	set fn to choose file name with prompt "Name this file" default name "List of Active OmniFocus Projects" & ¬
		".txt" default location (path to desktop folder)
	tell application "System Events"
		set fid to open for access fn with write permission
		write ExportList to fid
		close access fid
	end tell
end tell


on simple_sort(my_list)
	set the index_list to {}
	set the sorted_list to {}
	repeat (the number of items in my_list) times
		set the low_item to ""
		repeat with i from 1 to (number of items in my_list)
			if i is not in the index_list then
				set this_item to item i of my_list as text
				if the low_item is "" then
					set the low_item to this_item
					set the low_item_index to i
				else if this_item comes before the low_item then
					set the low_item to this_item
					set the low_item_index to i
				end if
			end if
		end repeat
		set the end of sorted_list to the low_item
		set the end of the index_list to the low_item_index
	end repeat
	return the sorted_list
end simple_sort
1 Like