Simple repeating tasks

I just setup a very simple repeating task automation in Fibery and I thought others might find it useful, even though it’s somewhat obvious (it took me a bit of fiddling to get the formulas right, so that may be true for others).

The desired result: when I mark a task “Done”, it resets the date of that task to X days in the future, creating a simple “recurrence” of the task.

I created two new fields, one to mark whether a Task reoccurs or not (Checkbox) and one two hold a simple numeric value “Recurring Interval” for the number of days until the task “reoccurs” again. Then I created an Automation that checks when the State field is set to “Done”, and when that happens it resets State to “New”, and adds the “Recurring Interval” to the current date and puts that into the Due Date field. The result is that the task is “re-used” and scheduled to be due X number of days after its completion.

Here are screenshots of the fields and automation:

And the simple formula I used (I may have made a mistake here, I’m still not very good with formulae, but it seems to work in my tests so far, hah):

Today() + Days([Step 1 Task].[Recurring Interval])

Possible improvements/extensions/adjustments you might want to consider (and should be easily able to extend the above process to do):

  • Set the recurrence date to X days from the original due date rather than from “today”
  • Add some Comment each time the task is completed, to easily track completion date (without having to reference the Activity Log), e.g. “Task completed on X”
  • Add a counter to track number of times it was completed
  • Create a new instance of the task, instead of re-using the same one
  • Etc.

I was surprised to not see something quite like this (though I may have missed it). There is Chris’s Repeating events, but I believe my approach is different enough to note here (though perhaps not complicated or unobvious enough :smile:).

My particular use case for this was inspired by the fact that I am seriously considering moving my entire personal task management and “Personal Knowledge Management” (PKM) process and tooling into Fibery. Currently this is spread for me across as many as 7 (!) different tools, and my intention is for Fibery to replace at least 4: Quip, Obsidian, Notion, and Amazing Marvin. The above behavior, while not necessarily everyone’s preference, actually emulates one way repeating tasks can work in Amazing Marvin and some other task management tools like ToDoist, which might contrast with more Project Management-oriented tools where very often you want an individual record of every “task completion”. For me just a Comment that it was completed is enough, and sometimes even that is overkill.

Anyway, I hope someone finds this useful!

3 Likes

I tackled this too, only slightly differently.

I have a field called “Repeats” which is a dropdown with “Daily, Monthly, Yearly” as options and the following automation

Date(If([Step 1 Task].Repeats.Name = "Yearly",Year([Step 1 Task].[Due Date]) + 1,Year([Step 1 Task].[Due Date])),If([Step 1 Task].Repeats.Name = "Monthly",Month([Step 1 Task].[Due Date]) + 1,Month([Step 1 Task].[Due Date])),If([Step 1 Task].Repeats.Name = "Daily",Day([Step 1 Task].[Due Date]) + 1,Day([Step 1 Task].[Due Date])))
3 Likes

I really wish the formula editor would allow me to enter an actual script with assignments and such, then return a value

1 Like

It’s hard to see how scripting in formulas would work - what would ‘trigger’ the script?
It’s easy to determine that a formula should be recalculated based on it’s construction, less so for a script?

True. It was just a thought because the nested if’s was tedious and cumbersome and cleaning that up would be a good thing; but perhaps that’s solving the wrong problem.

Thank you so much. This worked brilliantly.

1 Like

I’m the one using recurring a lot, especially to set remind for some transaction of mine, so I think i need to build a database for that
I build a periodic type database for this. Sometimes, it can be after 20 days, or fixed day 20th of each month, or date range …


, and set relation to database i I wanna to auto calculate the next recurring

Then I set an Automation to auto create new recurring transaction when Status = “Completed”

1 Like

Has anyone found a way to schedule recurring tasks with more dynamic and contextual dates?

I have things I want to schedule every month, but always on the “second” Monday, or the “last” Friday, similar to how Google Calendar allows you to schedule things.

I care less about the exact numerical day and more about that they occur on a specific day of the week. Simply setting things to occur every 30 days will quickly get them misaligned since some months have more/less days.

Do you mean that you want the creation of Task entities to occur on a specific schedule?
Or do you mean that you want to have created a set of Task entities each with a specific date (due date?) that follows a specific pattern?

Ideally, an automation rule would create a new record of an entity with DateRange field that is set to the same Monday - Sunday cadence each month, but since the “Day Number” of those days will be different each month, I’m struggling with the formula.

Here’s some screenshots of what I’m trying to do if it helps:

I’ve manually created the sample tickets here to help illustrate what I’d like, but ideally the automation would create the “Feb 2024” ticket on Feb 1 and the “Mar 2024” ticket on Mar 1, etc, etc.

Try this as your formula for updating the Period date range:

DateRange(
  Today() +
    Days(
      If(WeekDayName(Today()) = "Monday", 7,
        If(WeekDayName(Today()) = "Tuesday", 13,
          If(WeekDayName(Today()) = "Wednesday", 12,
            If(WeekDayName(Today()) = "Thursday", 11,
              If(WeekDayName(Today()) = "Friday", 10,
                If(WeekDayName(Today()) = "Satuday", 9, 8))))))
    ),
  Today() +
    Days(
      If(WeekDayName(Today()) = "Monday", 13,
        If(WeekDayName(Today()) = "Tuesday", 19,
          If(WeekDayName(Today()) = "Wednesday", 18,
            If(WeekDayName(Today()) = "Thursday", 17,
              If(WeekDayName(Today()) = "Friday", 16,
                If(WeekDayName(Today()) = "Satuday", 15, 14))))))
    )
)

As long as the automation always runs on the first of the month, you should get the dates you need.
Let us all know how you get on :slight_smile:

Perfect, thanks @Chr1sG, appreciate your wizardry with all these date formulas I keep throwing your way!

Now that I see how you’ve done this, I understand things a bit better and should be able to adjust and repurpose your logic for other situations that may be similar.