Has anyone got a workflow or automation for this (without having to manually defer every time):
- Task A and Task B are next to each other in a sequential project, or Task A is nested under Task B (i.e. Task B is dependent on Task A).
- Task B can only be available a certain amount of time after Task A is completed
Two examples of things I want to happen in OF:
- Washing only available to hang (Task B) 2 hours after put in the machine (Task A).
- Potatoes growing in the ground can only be harvested (Task B) min. 2 weeks after growth has been checked and firmed up a bit (Task A).
Anyone got any ideas??
You are asking for an option to defer Task B by a specific increment in time starting after Task A is completed. Such a feature does not exist, and I doubt that it will ever exist in OF, at least not in a foreseeable lifetime.
You want to avoid the need to make manual changes while completing a project with such task flow. One way to satisfy your need is to make the changes before you start the project. Have a pre-established master template that you copy as the working project. It has no defer states. Pre-fill the working copy with defer dates before you start the project by running an AppleScript procedure on the working project.
I imagine you would spend as much time coding and debugging the AppleScript as you might in manually changing the defer dates on Task B after you complete Task A. So, the manual labor that you want to avoid each time is only possible with a likely greater manual labor investment before hand.
And then in three weeks, you will discover that you cannot harvest the potatoes in two weeks as you planned because you have had one week of lower than expected temperatures.
I believe this has been requested in the past. I can see the benefit: fewer actions are available, and when you are busy performing tasks, you don’t have to worry about adjusting dates in the app.
It would be feasible to make an automation that adjusts the date of a following action. The difficulty I see is executing it in an easy and foolproof way. OF doesn’t provide a mechanism to trigger an automation when an action gets completed. You would need to manually run the automation for the currently selected action (which could mark it complete in the process). This is less convenient than simply checking off the action in the UI, easy to forget, and not available when you are using Siri or the Watch app. On the other hand, adjusting the defer date of the next action isn’t critical and can be done post hoc.
Thanks for understanding the utility of this functionality a little more than the other answer that was given 😆 I’m not averse to an automation, I use a few other ‘custom complete’ automations and generally know when I need them. If anyone savvy happens to see this and can write something, let me know 😅
Kaitlin Salzke has an excellent library of plug-ins. If you don’t find one that fits the bill, you can Request A Custom OmniFocus Plug-In through a form on her site.
Yes I’ve already got a couple from her, I think that will have to be my next move 😅
I’ve seen some dependency stuff from Kaitlin Salzke, but I don’t think there’s anything that allows this.
Here’s my workaround:
If I have two tasks like
- do A
- do B
but B needs to be deferred until, say, 2 weeks after A, then I add a task in between to remind me:
- do A
- set defer of B to 2 weeks after completion of A
- do B
Of course, B can be anywhere in my OF – in a different project or whatever. The important thing is that this task is the task right after A, so I update the deferral ASAP. It’s certainly far from ideal (which, of course, is how I got to this page), but it has worked for me. I have an “OmniFocus” tag for these little internal updates. My project templates usually have a bunch of these tasks, like for travel, there’s something like
- book flights
- set due for “last minute tasks” to morning of outbound flight
- set deferral of “return home tasks” to return flight arrival + 2 hours
Again, not perfect, but I find it helpful, and I can usually go though a long list of these in just a minute or two.