Omniplan / Omnifocus synchronisation
I've spent the last few hours of my life trying to populate OmniPlan with tasks from OmniFocus.
I have absolutely no idea why OmniGroup doesn't bother to integrate both apps or at least write some documentation how to export/import between them. Please please OmniGroup allow your customers use your two amazing products together... just like I can use OmniFocus on my Mac and iPad. If you are a customer who would also like this functionality please add a comment below. In the meantime this is what I found out you can do. 1. Open OmniFocus and OmniPlan 2. Select the folder in OmniFocus that you would like to add to OmniPlan. This should show the list of tasks you want to import. 3. Select any task... then press the apple button and a to select them all 4. Go to spotlight (top right of screen) and type apple script to launch the editor. 5. Copy and past the script below and click run -- Illustrative draft Ver 0.7 -- Copies anything selected in Omnifocus (Project or Context View) into Omniplan -- Note that the whole sub-tree is copied, so only 'parent' elements need to be selected. -- The destination is the currently open OmniPlan document. -- (A fresh OmniPlan document is created if none is open) property pPROJECT : "project" property pTASK : "task" property pITEM : "item" on run set {lstActivities, blnContext} to SelectedInOF() PlaceinOP(lstActivities) end run -- TRANSFERRING TO OMNIPLAN on PlaceinOP(lstTasks) if (length of lstTasks > 0) then tell application id "OPla" if (count of documents) < 1 then set oDoc to make new document else set oDoc to front document end if my PlaceTasks(lstTasks, oDoc) end tell end if end PlaceinOP on PlaceTasks(lstTasks, oParent) tell application id "OPla" tell oParent repeat with oTask in lstTasks set {strName, blnDone, lstSubTasks, strNote, strParent, dteStart, dteDue, dteDone, lngMins, blnFlagged} to oTask if length of strNote > 0 then set oOPTask to make new task with properties {name:strName, note:strNote} else set oOPTask to make new task with properties {name:strName} end if 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 lngMins > 0 then set duration to lngMins * 60 end if if blnDone then set completed to 1 end tell if length of lstSubTasks > 0 then my PlaceTasks(lstSubTasks, oOPTask) end if end repeat end tell end tell end PlaceTasks -- READ SELECTED OmniFocus CONTENT TREE(S) TO NESTED APPLESCRIPT LISTS - Ver.02 on SelectedInOF() tell application id "OFOC" set oWin to front window set blnContext to ((selected view mode identifier) of oWin is not equal to pPROJECT) tell content of oWin set lstContentSeln to selected trees if (count of lstContentSeln) > 0 then -- Whatever is SELECTED in content panel set lstTrees to lstContentSeln set blnAll to false else -- EVERYTHING in the content panel set lstTrees to trees set blnAll to true end if end tell {my Trees2List(oWin, lstTrees, blnContext, blnAll), blnContext} end tell end SelectedInOF on Trees2List(oWin, lstTrees, blnContext, blnAll) set lstTasks to {} tell application id "OFOC" repeat with oNode in lstTrees set oValue to value of oNode set cClass to class of oValue if cClass is not item then if cClass is project then set end of lstTasks to my ListProject(oNode, oValue, blnContext, blnAll) else if cClass is task then set end of lstTasks to my ListTask(oNode, blnContext, blnAll) else set end of lstTasks to my ListContext(oNode, oValue, blnAll) end if else set end of lstTasks to my ListUnProcessed(oNode, oValue, blnContext, blnAll) end if end repeat end tell lstTasks end Trees2List on ListProject(oNode, oValue, blnContext, blnAll) tell application id "OFOC" tell oNode set lstChildren to trees of oNode tell oValue if (count of lstChildren) > 0 then {name, completed, my ListSubTrees(lstChildren, blnContext, blnAll), note, "", start date, due date, completion date, estimated minutes, flagged} else {name, completed, {}, note, "", start date, due date, completion date, estimated minutes, flagged} end if end tell end tell end tell end ListProject on ListContext(oNode, oValue, blnAll) tell application id "OFOC" tell oNode set lstChildren to trees set oValue to value of oNode tell oValue if (count of lstChildren) > 0 then {name, false, my ListSubTrees(lstChildren, true, blnAll), note, "", missing value, missing value, missing value, 0, false} else {name, false, {}, note, "", missing value, missing value, missing value, 0, false} end if end tell end tell end tell end ListContext on ListUnProcessed(oNode, oValue, blnContext, blnAll) tell application id "OFOC" tell oNode set lstChildren to trees if blnContext then set strName to "No Context" else set strName to "Inbox" end if tell oValue if (count of lstChildren) > 0 then {strName, false, my ListSubTrees(lstChildren, blnContext, blnAll), "", "", missing value, missing value, missing value, 0, false} else {strName, false, {}, "", "", missing value, missing value, missing value, 0, false} end if end tell end tell end tell end ListUnProcessed on ListSubTrees(lstTrees, blnContext, blnAll) set lstTasks to {} repeat with oNode in lstTrees set end of lstTasks to my ListTask(oNode, blnContext, blnAll) end repeat return lstTasks end ListSubTrees on ListTask(oNode, blnContext, blnAll) tell application id "OFOC" tell oNode set oTask to value of oNode set lstSubTrees to trees of oNode end tell if blnContext then set oParent to containing project of oTask else set oParent to context of oTask end if if oParent is not missing value then set strParent to name of oParent else set strParent to "" end if tell oTask if (count of lstSubTrees) > 0 then {name, completed, my ListSubTrees(lstSubTrees, blnContext, blnAll), note, strParent, start date, due date, completion date, estimated minutes, flagged} else {name, completed, {}, note, strParent, start date, due date, completion date, estimated minutes, flagged} end if end tell end tell end ListTask ----------------- To export from OmniPlan to OmniFocus Go to OmniPlan and export in OO3 format In OF choose Import and select OO3 file Map "assigned to" to Context, and finish the import In Inbox, assign the whole set of tasks to a project In context mode, delete all tasks that are not in the context with my name on it Hopes this helps. Any other tips would be appreciated. |
[QUOTE=tonyoconnell;105447]
Hopes this helps. Any other tips would be appreciated.[/QUOTE] Well, you could post links to the threads where you found this information, rather than reposting without attribution. That way, when the content on those threads is updated, anyone looking for it gets the latest stuff, instead of possibly stumbling across a static copy that is out of date. Also, using Help->Send Feedback from within the app is a better way to make a feature request (or bug report) than posting to the forum. It's a bit hit or miss as to whether the right Omni staffer will see any given forum post (or whether any Omni staffer will see it!) but the email generated by Send Feedback goes into their tracking system and is eventually seen by someone whose job it is to handle it. |
Sync has been talked about for a long time, and still no go. There is also no sync to iCal.
I am trying to get my work group on a work flow with OmniOutliner, OmniPlan, and OmniFocus, and it's like a 19th century collage. What gives? |
All times are GMT -8. The time now is 10:07 AM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.