I bought OmniFocus, but haven't yet learned how to use it. I may never use it if I could filter on OO based on the content of any column. That alone would be huge in order to use OO as a task manager: filter by date, filter by context, etc.
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!
|
Member
2007-12-20, 03:02 PM
I bought OmniFocus, but haven't yet learned how to use it. I may never use it if I could filter on OO based on the content of any column. That alone would be huge in order to use OO as a task manager: filter by date, filter by context, etc.
Post 61
|
Quote:
-andrew
Post 62
|
Member
2007-12-22, 08:14 AM
Quote:
Quote:
Post 63
|
Member
2007-12-22, 01:39 PM
Quote:
tell front document of application "OmniOutliner Professional" set theProjectList to {} set enumcount to count of enumerations of column "Project" set x to 1 repeat until x = enumcount --- set item x of theProjectList to name of enumeration x of column "Project" copy name of enumeration x of column "Project" to end of theProjectList set x to x + 1 end repeat set thePopChoice to choose from list theProjectList with title "Project" if (thePopChoice is false) then return set thePopChoice to (item 1 of thePopChoice) set theRow to first row whose topic contains thePopChoice hoist theRow select theRow end tell You can also script filtering similar to how KGTD does it. By creating the filters as subtopics in the utility drawers.
Post 64
|
Member
2007-12-25, 04:19 PM
Quote:
Finding things in the topic column does not require a script: you can do it by typing in the search box in the utility drawer. I'd love to have a way to do the same for other columns! e.g. a date column.
Post 65
|
Member
2007-12-29, 02:42 AM
Quote:
I use the term fake filter to describe what is possible today, and apparently for a while based on this thread, in OO. Basically what you can do is find all the rows that have a column that match a certain criteria based on the value of a column of interest and duplicate them as children of a Heading for your filter. So assuming you wanted your find to be based on items due today, you would create a top level row called "Today" and then duplicate all the rows in your document with a due date column set to today as children of that Top level row. Let me know if that is what your after and I think I can help... (think being a key word)
Post 66
|
Member
2007-12-30, 09:23 AM
Quote:
Any help you can offer is more than welcome.
Post 67
|
Member
2007-12-31, 02:18 AM
Glad to help. I certainly have received a lot from this board. I have a script that is pretty close to what you want already. Let me work on it during the day tomorrow and see what I can do... Worst case it will be the week end.
Last edited by gcrump; 2007-12-31 at 02:21 AM..
Post 68
|
Member
2008-01-01, 03:13 PM
Here is what I have so far... This assume you have a section of your document labled overdue...
tell application "OmniOutliner Professional" tell front document set TodaysDate to current date repeat with theRow in every row set ThisSection to (first row whose topic starts with "Overdue") set theTopic to value of cell "Topic" of theRow set theDuedate to value of cell "Due Date" of theRow if TodaysDate < (current date) then set theNewRow to make new row at end of rows of (first child whose topic begins with "Overdue") with properties {topic:theTopic} set value of cell "Due Date" of theNewRow to theDuedate end if end repeat end tell Last edited by gcrump; 2008-01-01 at 03:15 PM..
Post 69
|
Member
2008-01-05, 12:52 PM
Thank you, gcrump! This is fantastic.
Here it is, edited to do what I want: tell application "OmniOutliner Professional" tell front document set TodaysDate to current date repeat with theRow in every row if (count children of theRow) = 0 then set ThisSection to (first row whose topic starts with "Today!") set theTopic to value of cell "Topic" of theRow set theDate to value of cell "Date" of theRow if TodaysDate ≥ theDate then set theNewRow to make new row at end of rows of (first child whose topic begins with "Today!") with properties {topic:theTopic} set value of cell "Date" of theNewRow to theDate set value of cell "Priority" of theNewRow to 1 end if end if end repeat end tell end tell This copies rows whose "date" is today, pastes them as children of "Today!", sets the date of the pasted copy as today and its "priority" as 1. It only picks up rows with no children. The reason is that I don't want it to get rows that have today's date because of inheriting it from a child. (For example, if the parent is "shopping" and the child is "buy milk", only "buy milk" is picked up.) Thanks again, gcrump -- I would not have known how to get started, but what you sent me allowed me to get to what I needed with a little trial and error. Whew! Last edited by henri; 2008-01-05 at 01:10 PM.. Reason: improved the script
Post 70
|