Skip repeating task?

I also really would like a way to do this. I have a sequence of tasks for going to the gym. This includes preparing my gym bag the night before, going to the gym, putting my workout into weighttraning.com, and finally putting dirty gym clothes in the laundry when I get home. This repeats every week on Monday, Wednesday and Friday.

Sometimes my life derails due to other priorities, and I don’t make it to the gym for a particular day. This throws all my repeating tasks out of whack. I would like a way to be able to right click on a Task (or group of Tasks) and mark ‘Skip’. This would essentially do the same as marking it ‘completed’ except that it wouldn’t show up in my ‘Completed Tasks’ view. It would simply skip to the next repeating instance.

Can this be done?

This would also solve the problem of what happens when your routing temporarily changes, such as when you are on vacation. Currently vacations cause everything to get into a real muddle.

You should really check out the script linked to earlier by @ediventurin; when set up with a keyboard command it gives me the skip that I’m looking for. It’s become an indispensable part of my OF setup.

1 Like

Thanks. That’s awesome. I hadn’t seen the link above but this is what happens when you skim rather than read. ;)

Can it cope with a task that is part of a repeating group of sub-tasks? Presumably, running the script on a sub-tasks means that it deletes the task before the whole group repeats, losing the task from the next ‘cycle’? I would guess it can only be run on the parent task, right?

For those who’d prefer a native solution, I do this on the Mac with a quick [spacebar] [delete key] sequence.

  • space marks the selected item complete (spawning its next instance), and
  • delete immediately clears the selected item from history (leaving the next instance in place)

I also occasionally add “[NOPE]” to the title of tasks that I didn’t do if I want to keep them in my history for some reason

1 Like

Hi, gang, I just want to check in here as an “old timer.” Thinking back to OF1, many of us used this type of feature and relied on it starting some 4 to 6 years ago. It was set up by (using a daily task as an example) "Repeat every 1 day, From Completion Date). The advantages of this were that if you missed a day or two, new iterations would NOT appear and pile up; plus, if you DID complete the task, it would disappear for the rest of that day and then the next (new) iteration would loyally appear the next day (I think around midnight or something…there might have been a way to set that).

The case scenario that so many of the threads on this forum ignore when debating this quest for the perfect “repeat task” implementation is what happens when you don’t complete a task? What is the behavior of the task when OF hits the next iteration cycle?

After spending three hours today talking with support, reading the manual, and reading the forums, it seems there is no way to implement this when you populate either the “Defer until” and/or the “Due” fields in the “Dates” area of the Inspector. If a value is set in either of those fields for a task, it doesn’t matter which alternative you use in the drop-down menu in the Repeat section (Repeat Every, Defer Another, Due Again). No matter what, if you DON’T check off the item during the day (for a daily task), it will be red (and overdue) the next day. Speaking for myself, what I loved about “Repeat…From Completion Date” in OF1 was that I wasn’t “punished” by the UX for being a slacker. If I didn’t get 20 daily things done yesterday because I decided to go the beach, when tomorrow dawned, I could be assured that those items would still be there (only one iteration of each) looking exactly the way they had the day before.

The closest thing I can find to OF1’s “Repeat every X from completion date” is to leave everything blank in the “Dates” section for a task in OF2, and set Repeat to “Defer Another: 1 day.” You lose the yellow and red indicators, but with these type of daily/weekly tasks, there usually isn’t a due or defer; plus, with this implementation you regain the old functionality: if you complete the item, it disappears (in the Available view); if you don’t complete it, the task hangs around and looks just the same the next day. Appears to work on the iPhone the same way.

1 Like

wow, no response to this? someone on the forums must be either still struggling with this, or have the answer

I was told by Support to use the “Defer Another” setting. Yes, that works fairly well; but you do not have the ability to set it for repeat on just certain days of the week, for example. So I have those set to Repeat and weekdays (for work stuff). I was out sick recently, off my schedule for about six days, and all those tasks propagated somehow. Instead of just having to mark “done” for 6 days x the # of tasks for work days, I had to mark as “done” hundreds and hundreds of duplicates. Not fun.

It still is COMPLETELY beyond me why the options for repeating were so much more customizable in the old version of OF, and OG chose to complete rip out destroy them when this part of OF was recoded for the new major version upgrade.

While there are a couple regressions related to repetitions in OmniFocus 2, we did not deliberately remove any functionality that I can think of.

I am be able to set a defer date, repeat the action, ignore the new one for several days and have it not turn red.

  • Create an action, set its defer date to yesterday.
  • Set its repeat schedule to “Defer Another” “1 day”.
  • Click the status circle to complete it.
  • The newly created rendition of this action has a defer date of tomorrow. It has no due date. It is not going to turn red.

What am I misunderstanding?

This seems to be working for at least one action. I don’t know why it wasn’t working in the past…I thought that it had failed under certain conditions—but perhaps I didn’t QA the issue properly. I think I can more reliably test it now on a bunch of different items set up the same way.

I am hopeful that this will work correctly and solve the problem for me. Thank you for outlining the setup procedure in such a clear and concise manner.

I have similar requirement and just found one solution.
I have one “repeat every 1 week” action to exercise and due date is Friday. In fact, I usually do it on one day from Monday to Friday, this action is one reminder to do it. But sometimes I cannot get time to do it so this action just becomes overdue in red. Let us say the current due date is Mar 11 2016, the next due date is Mar 18 2016, now (Mar 12 2016) it is overdue. My solution is to change the current due date from Mar 11 to Mar 18, then the next due date automatically becomes Mar 25.

Maybe I am missing something, or a change has been made to the software since March, but here is my 2 cents… When I have a repeating action (say every three days) that I don’t get done on an assigned day, I just bump the due date to the next assigned day I would normally do that action. This maintains the repeating pattern and doesn’t record completion for an action I didn’t do.

Oh wait, that’s what the March post said! Guess I didn’t read carefully.

I had been using the Skip Applescript by Ryan Davis mentioned above, but it recently stopped working. Anyone know why and how to fix it?

Same here. Would love to have this back!

Just found the fix on this thread. I had to change
set completed of aTask to true
to
mark complete aTask.

Spoke too soon. While the script runs now without an error, it’s deleting the new task rather than the one that was completed. 😞

In most cases, I mark the task as complete and then delete it.
The new task is created and actual done logs are accurate.

Yes, that’s what the script does as well…at least it used to until recent updates.

Yep, I tried writing a similar script a little while ago, and AFAICT, completing a repeating task generates a new completed task, and the original task becomes the next instance.

I’ve found a way around this, though it’s not super pretty. It relies on an apparent relationship between the ids of the repeating and the new, completed task—namely, that the completed task’s id is the original task’s id with an appended .0 (or .1, or .2, or so on, if those ids have already been generated for earlier repeats of the task).

My script generates the next instance of a repeating task by marking the repeating task as complete, then uncompleting the completed task and removing its repeat rule. This lets you change something about today’s copy of a task, without changing what will happen on future iterations. The script is a bit primitive right now, but it goes like this:

const document = Application("OmniFocus").defaultDocument

const repeatingTask = document.documentWindows[0].content.selectedTrees.value()[0]
repeatingTask.markComplete()

const tasks = document.flattenedTasks
const isRepeatOfId = id => id.startsWith(repeatingTask.id())
const currentTask = tasks.byId(tasks.id().filter(isRepeatOfId).sort().slice(-1)[0])
currentTask.markIncomplete()
currentTask.repetitionRule = null

You could implement the Skip script similarly, by changing the end of it:

const document = Application("OmniFocus").defaultDocument

const repeatingTask = document.documentWindows[0].content.selectedTrees.value()[0]
repeatingTask.markComplete()

const tasks = document.flattenedTasks
const isRepeatOfId = id => id.startsWith(repeatingTask.id())
const currentTask = tasks.byId(tasks.id().filter(isRepeatOfId).sort().slice(-1)[0])
currentTask.delete()

Or, you could use the first version of the script (if you want the flexibility), and manually delete today’s copy after running it.

Note that the script doesn’t have any kind of guardrails right now; be sure you have a task selected (in the main pane), and that it’s a repeating task. It will work on projects, but only if they’re selected in the main pane. And it will only touch the first selected task.

Also, note one unfortunate thing about this script: it has to query OF for every task id in the database to do its magic. That’ll get slower as the database grows. My database is still fairly small, and it seems fast enough for me, but I’m curious if it becomes unmanageable at bigger sizes.