Shotster, du you mind sharing your changes?
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!
|
|
FAQ | Members List | Calendar | Today's Posts | Search |
Exporting the whole OF database to OPML | Thread Tools | Search this Thread | Display Modes |
|
Member
2012-01-01, 03:50 AM
Shotster, du you mind sharing your changes?
Post 1
|
Member
2012-01-01, 12:24 PM
Not at all. Following is the entire script. You'll have to compare it with the original to see exactly what I changed. I didn't take the time to document my changes with comments or anything.
Code:
-- Indicative draft Ver 0.001 -- Saves anything selected in Omnifocus (Project or Context View) As an OPML -- Including the following fields: DONE, NOTE, CONTEXT, PROJECT, START, DUE, COMPLETED, DURATION, FLAGGED} -- Note that the whole sub-tree is copied, so only 'parent' elements need to be selected. property pPROJECT : "project" property pTASK : "task" property pINBX_TASK : "inbox task" property pITEM : "item" property pOPMLHeadToExpand : " <?xml version=\"1.0\" encoding=\"utf-8\"?> <opml version=\"1.0\"> <head> <title>Selected in OF</title> <expansionState>" property pOPMLHeadFromExpand : "</expansionState> </head> <body> " property pOPMLTail : " </body> </opml>" property pNodeStart : "<outline " property pLeafClose : "/>" property pParentClose : "</outline>" on run set strOPML to MakeOPML(SelectedInOF()) if strOPML ≠ "" then set oFile to choose file name with prompt "Save as OPML" default name "Untitled.opml" default location (path to desktop) as alias WriteText2Path(strOPML, POSIX path of oFile) end if end run -- READ SELECTED OmniFocus CONTENT TREE(S) TO NESTED APPLESCRIPT LISTS - Ver.04 on SelectedInOF() tell application "OmniFocus" tell front window set blnContext to ((selected view mode identifier) is not equal to pPROJECT) repeat with oPanel in {content, sidebar} set lstNodes to value of (selected trees of oPanel where class of its value ≠ item) set lngNodes to count of lstNodes if lngNodes > 0 then exit repeat end repeat set blnAll to (lngNodes < 1) if blnAll then set lstNodes to value of (trees of content where class of its value ≠ item) end tell repeat with i from 1 to length of lstNodes tell item i of lstNodes if (its class) is not folder then if (number of tasks) > 0 then --set item i of lstNodes to {name, completed, my ListSubNodes(its tasks, blnContext, blnAll), note, "", "", start date, due date, completion date, estimated minutes, flagged} set item i of lstNodes to {name, completed, my ListSubNodes(its tasks, blnContext, blnAll), note, "", "", start date, due date, completion date, estimated minutes, flagged} else set item i of lstNodes to {name, completed, {}, note, "", "", start date, due date, completion date, estimated minutes, flagged} end if else if (number of projects) > 0 then set item i of lstNodes to {name, false, my ListSubNodes(its projects, blnContext, blnAll), note, "", "", missing value, missing value, missing value, missing value, false} else set item i of lstNodes to {name, false, {}, note, "", "", missing value, missing value, missing value, missing value, false} end if end if end tell end repeat return {lstNodes, blnContext} end tell end SelectedInOF on ListSubNodes(lstNodes, blnAll) using terms from application "OmniFocus" repeat with i from 1 to length of lstNodes tell item i of lstNodes set oProj to its containing project if oProj is not missing value then set strProject to name of oProj else set strProject to "" end if set oContext to its context if oContext is not missing value then set strContext to name of oContext else set strContext to "" end if if (number of tasks) > 0 then set item i of lstNodes to {name, completed, my ListSubNodes(its tasks, blnAll), note, strProject, strContext, start date, due date, completion date, estimated minutes, flagged} else set item i of lstNodes to {name, completed, {}, note, strProject, strContext, start date, due date, completion date, estimated minutes, flagged} end if end tell end repeat return lstNodes end using terms from end ListSubNodes -- BUILD OPML on MakeOPML({lstTasks, blnContext}) if (length of lstTasks > 0) then set {lngIndex, strExpand, strOutline} to my Tasks2OPML(-1, lstTasks, tab) set strOPML to pOPMLHeadToExpand & strExpand & pOPMLHeadFromExpand & strOutline & pOPMLTail return strOPML end if end MakeOPML on Tasks2OPML(lngIndex, lstTasks, strIndent) set {strExpand, strOut} to {"", ""} repeat with oTask in lstTasks set {strName, blnDone, lstChiln, strNote, strProject, strContext, dteStart, dteDue, dteDone, lngMins, blnFlagged} to oTask if strNote ≠ "" then set strOut to strOut & pNodeStart & Attr("text", strName) & Attr("_note", strNote) else set strOut to strOut & pNodeStart & Attr("text", strName) end if if blnDone then if (dteDone is not missing value) then set strOut to strOut & Attr("_status", "checked") & Attr("Completed", short date string of dteDone & space & time string of dteDone) end if if strProject ≠ "" then set strOut to strOut & Attr("Project", strProject) if strContext ≠ "" then set strOut to strOut & Attr("Context", strContext) tell dteStart to if it is not missing value then set strOut to strOut & my Attr("Start", short date string & space & time string) tell dteDue to if it is not missing value then set strOut to strOut & my Attr("Due", short date string & space & time string) if lngMins > 0 then set strOut to strOut & Attr("Duration", ((lngMins / 60) as string) & "h") if blnFlagged then set strOut to strOut & Attr("Flagged", "2") set lngIndex to lngIndex + 1 if (length of lstChiln > 0) then set strExpand to strExpand & "," & (lngIndex) as string set {lngIndex, strSubExpand, strSubOutln} to Tasks2OPML(lngIndex, lstChiln, strIndent & tab) if strSubExpand ≠ "" then set strExpand to strExpand & "," & strSubExpand set strOut to strOut & ">" & return & ¬ strIndent & strSubOutln & return & ¬ strIndent & pParentClose else set strOut to strOut & pLeafClose & return end if end repeat if strExpand begins with "," and length of strExpand > 1 then set strExpand to text 2 thru -1 of strExpand return {lngIndex, strExpand, strOut} end Tasks2OPML on Attr(strName, strValue) --strName & "=\"" & strValue & "\" " strName & "=\"" & attributeValue(strValue) & "\" " end Attr on WriteText2Path(strText, strPosixPath) set f to (POSIX file strPosixPath) open for access f with write permission write strText as «class utf8» to f close access f end WriteText2Path on attributeValue(str) set retVal to stringReplace("&", "&", str) set retVal to stringReplace("\"", """, retVal) set retVal to stringReplace("<", "<", retVal) set retVal to stringReplace(">", ">", retVal) set retVal to stringReplace(" ", " ", retVal) return retVal end attributeValue on stringReplace(find, replace, subject) set prevTIDs to text item delimiters of AppleScript set text item delimiters of AppleScript to find set subject to text items of subject set text item delimiters of AppleScript to replace set subject to "" & subject set text item delimiters of AppleScript to prevTIDs return subject end stringReplace -Steve
Post 2
|
Member
2012-01-30, 12:10 PM
I'm trying to migrate out of omnifocus into omnioutliner which I think would suit me better.
Used your opml script and works almost 100%. problem is I lose notes attached directly to a projects (project title) in omnifocus. that is to say, they don't show up in omnioutliner. it shows the omnifocus project title as a checkbox item but without the note. if the project has checkboxes and subcheckboxes then I see all the notes for each of those. it's just the top level note that would be missing. if that's not clear maybe we could skype? thanks so much for your apple script and your help!
Post 3
|
Guest
2012-01-30, 12:59 PM
This script, which does, I think, export project notes, might be quicker for OF to oo3.
Post 4
|
Member
2012-01-30, 02:54 PM
hi Rob, I've tried that one also...
of2omnioutlinerpro does not bring the folder names over (but it fixes the problem with the missing note) of2opml does bring folder names, but has the missing note bug. I could paypal you a token $20 for a fix, if that is of any motivation. (I really don't understand why all the omni things don't import export to eachother already!) thanks for your great and generous work with the scripts!
Post 5
|
Member
2012-01-30, 03:51 PM
Will you send it to me, instead? Rob's asleep :-)
I've attached a modified version of OF2OPML that handles project notes in the same fashion as action notes.
Post 6
|
Member
2012-01-30, 07:46 PM
hi!
got the revised script from Palmer. works! going to send you $20, just need your email for paypal, so PM it to me I guess... also going to send $20 to RobTrew for original applescript work. thanks! now that I have a correct opml I can look at other organizer options like Curio. still seems choices are limited, but unless I can solve my hanging problems with omnifocus I have to switch. again thanks to both of you. the payment is just a token for your generous work.
Post 7
|
Guest
2012-01-31, 06:47 AM
Quote:
Meanwhile, I've updated the OF2OO script, which should now export folders. (As it's based on GUI selections, to export folders with tasks as well as the projects, you need to choose 'group by folders' in the content panel, and select the folders required - their descendant trees will be picked up automatically). -- Last edited by RobTrew; 2012-01-31 at 08:04 AM..
Post 8
|
Member
2012-01-31, 06:20 AM
Thanks! I didn't get a notification on your reply, so sorry for my late reply.
I'm mainly interested in your replacement method, because German has a couple of weird characters as well. When I got a working version I plan to share my results. Again, thanks. Andreas
Post 9
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Exporting to an OPML app then PDF | idea2go | OmniOutliner for iPad | 18 | 2013-09-27 06:38 AM |
Exporting OF Library to OPML for iThoughts HD | Mschechter | OmniFocus 1 for Mac | 0 | 2012-07-29 06:57 AM |
OPML exporting and formatted text | macula | OmniOutliner 3 for Mac | 6 | 2010-06-09 06:53 AM |
Exporting to Keynote and OPML | xiamenese | OmniOutliner 3 for Mac | 2 | 2009-10-30 08:10 PM |
Exporting to OPML using AppleScript | atobe | OmniOutliner 3 for Mac | 5 | 2008-05-30 02:11 AM |