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 Today's Posts

 
export CSV to Gantt? Thread Tools Search this Thread Display Modes
Since OF will export CSV, is it possible to map the projects with start/due dates to software that will create a Gantt chart from them? Has anyone done this successfully?
 
That is possible, I use Merlin for this, but you'll even find google doc extras that will create Gantts. Second, I mostly go the other way around, planning projects in Novamind or Merlin, then send my personal tasks to OF.

For export from OF, it is a bit tricky to sort your columns first. And a BIG drawback is that notes in csv exports are not placed on the same row as the task. But if you have Office, iWorks or OpenOffice you can create mapping templates as spreadsheets. It will include mcgyvering your csv a lot, but it can be done.

Could be somebody out there who has scripted this?

Regards,

Arild
 
I think it usually makes a bit more sense to want to go from an OmniPlan project to an OmniFocus one than the other way around, but I can see utility in both cases.

My suggestion is that the best conversion technique would be to write an Applescript that builds rows in the other application directly instead of trying to fool around with .CSV files and the like. RobTrew's got a bunch of conversion scripts, and the OmniFocus to OmniOutliner one seems like a good example of what I mean: http://web.me.com/robinfrancistrew/S...ioutliner.html.
 
Here is an illustrative draft of an applescript which exports projects from OmniFocus to OmniPlan.

This version exports any projects in the OF database which are active and which have a start date and/or due date. (Note that it ignores projects which have no specified start or due date themselves, but contain tasks or sub-tasks which do. It also skips any hidden folders).

(See other scripts which I have posted elsewhere in this forum for transferring the currently selected tasks OmniPlan <--> OmniFocus)

http://forums.omnigroup.com/showthread.php?t=15447

http://forums.omnigroup.com/showthread.php?t=15448


Code:
property pdte1600 : date "Saturday, January 1, 1600 00:00:00"

on run
	tell application id "com.omnigroup.OmniFocus"
		set lstProjects to my ActiveDatedProjects(front document)
		set lstTasks to my TaskList(lstProjects)
	end tell
	
	if length of lstTasks < 1 then return
	
	tell application id "com.omnigroup.OmniPlan"
		if (count of documents) < 1 then
			set oDoc to make new document
		else
			set oDoc to front document
		end if
		my PlaceinOP(lstTasks, oDoc)
	end tell
end run

on ActiveDatedProjects(oParent)
	using terms from application "OmniFocus"
		tell oParent
			set lstFolders to folders where hidden is false
			set lstProjects to projects where status is active and ((start date > pdte1600) or (due date > pdte1600))
			if length of lstFolders > 0 then
				lstProjects & my FolderProjects(lstFolders)
			else
				lstProjects
			end if
		end tell
	end using terms from
end ActiveDatedProjects

on FolderProjects(lstFolder)
	set lstProject to {}
	repeat with oFolder in lstFolder
		set lstProject to lstProject & ActiveDatedProjects(oFolder)
	end repeat
end FolderProjects

on TaskList(lstOFItems)
	set lstTasks to {}
	using terms from application "OmniFocus"
		repeat with oTask in lstOFItems
			tell oTask
				set lstOFTasks to tasks
				if (count of lstOFTasks) > 0 then
					set end of lstTasks to {name, my TaskList(lstOFTasks), start date, due date, note}
				else
					set end of lstTasks to {name, {}, start date, due date, note}
				end if
			end tell
		end repeat
		return lstTasks
	end using terms from
end TaskList

on PlaceinOP(lstTasks, oParent)
	using terms from application "OmniPlan"
		tell oParent
			repeat with oTask in lstTasks
				set {strName, lstSubTasks, dteStart, dteDue, strNote} to oTask
				set oOPTask to make new task with properties {name:strName}
				tell oOPTask
					if dteStart is not equal to missing value then set starting date to dteStart
					if dteDue is not equal to missing value then set ending date to dteDue
					if (length of strNote > 0) then set note to strNote
				end tell
				if length of lstSubTasks > 0 then
					my PlaceinOP(lstSubTasks, oOPTask)
				end if
			end repeat
		end tell
	end using terms from
end PlaceinOP

Last edited by RobTrew; 2010-02-28 at 01:47 AM..
 
 




Similar Threads
Thread Thread Starter Forum Replies Last Post
Collapsed Gantt Chart Groups in HTML Export nckswt OmniPlan Extras 2 2012-08-01 02:45 PM
PDF export of Gantt chart michaelaye OmniPlan General 1 2011-11-21 04:28 AM
export gantt chart to omnigraffle thormar OmniPlan Extras 3 2011-08-01 01:19 PM


All times are GMT -8. The time now is 02:17 PM.


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