Copy column Omnioutliner 5

Hard for me to believe this feature doesn’t exist: Is it possible to copy an entire column from an OO 5 outline and paste it elsewhere (e.g., TextEdit)?


This must be column day at the Omni. Short answer is not really.

However, you could make some kind of workaround like export as csv. Then use some tool to remove the unwanted columns, either a spreadsheet, or a command-line tool, e.g. ‘cut’.

Wow. Hard to understand having a column feature without such limited ability to manipulate it. In any case, thanks for the quick response.

My pleasure. It does seem that way but OO is really a row-centric app. Consider that most text editors/word processors can’t work with columns of text either.

You could likely have an applescript do the heavy lifting for you, e.g. export to csv, remove unwanted columns, then deposit in a new TextEdit file. Or alternatively, grab the value from every cell in a column and put that in a text file. One of the other ‘column’ posts I made earlier puts the cell values into a different column— something like that. There are a couple of ways you could approach it from.

Here for example, is a simple script that will grab every non-empty topic below level 1 and create a text file on the desktop with them as paragraphs.

tell application "OmniOutliner"
	tell document 1
		set keyRows to rows whose level is greater than 1 and topic is not ""
		set paraText to ""
		set xText2 to {}
		-- set xText3 to {} -- 2C
		repeat with x in keyRows
			set beginning of xText2 to value of cell 2 of x
			-- set beginning of xText3 to value of cell 3 of x -- 2C
		end repeat
	end tell
end tell

repeat with cc from 1 to count of keyRows
	set paraText to ((item cc of xText2 & linefeed) & paraText) as text -- 1C
	-- set paraText to ((item cc of xText2 & tab & item cc of xText3 & linefeed) & paraText) as text -- 2C
end repeat

set tf to ((path to desktop as text) & "fileParagraphs.txt") as «class furl»
close access (open for access tf)
write paraText to tf as text

tell application "TextEdit"
	open tf
end tell

Note that some lines end with comments of ‘1C’ and ‘2C’. If you swap them (i.e. uncomment the 2C lines and comment the 1C line), then the script will also grab the text in cell 3 of each row (separated with a tab).

Don’t forget that a column in an outline nest, unlike a spreadsheet column, is not a defined set of coherent data.

  • You want to copy all values from a particular level of the outline ?
  • Which level ?
  • All levels ? Well, that gathers data of incoherent types – some leaf-level data, and some summary. Once “all” are copied, how will you know which are leaf cell values and which are summary cell values from higher levels in the outline ?

“An entire column” is a well-defined set of data in a spreadsheet, but not in an outline with column cells at differing levels of nesting.