I want to know how can I set a repetitive task for only a range of days of the week, for instance from Monday to Friday only.
4 Answers
This special sexp diary entry will repeat the TODO on weekdays:
** TODO On Weekdays
<%%(let ((dayname (calendar-day-of-week date)))(memq dayname '(1 2 3 4 5)))> [2015-02-01 So]

- 3,434
- 14
- 22
-
1This doesn't seem to work properly. While it does cause the event to display in the agenda on weekdays, it doesn't work correctly with the repeating-todo functionality. When I mark the task as DONE, it doesn't return to the TODO state. – Aug 24 '15 at 22:04
-
6The diary sexps are not meant to work with rescheduling. If you depend on this, it's probably easier to set up multiple todo entries, one per weekday. – mutbuerger Aug 26 '15 at 08:31
-
Thanks, but I'm confused: assuming a TODO entry will be marked DONE when it's done, how is a repeating sexp useful if it doesn't cause the TODO to get rescheduled? – Aug 29 '15 at 17:47
-
Citing the Org-mode manual: "the use of diary sexp entries like `<%%(diary-float t 42)>` in scheduling and deadline timestamps is limited. [...] However, it will show the item on each day where the sexp entry matches". – mutbuerger Aug 30 '15 at 06:21
-
I suppose, then, that you could use an agenda view that displays DONE items, and then manually mark it TODO and then DONE again. Too bad that the sexps can't just work with repeating items. :( – Sep 02 '15 at 07:41
https://github.com/oddious/org-habit-plus
What’s this?
The great org-habit module lacks a way to handle a very common type of habits, those that can/may/must be executed only on certain weekdays. There exist several workarounds like creating a habit for each day of interest, but they are less flexible and spoil the beauty of Org.
This little enhancement aims to fill the gap. It’s a fork of the original org-habit module and most of the internals are left untouched.
What works
The desired minimum.
...
How it works
As simple as specifying the weekdays (1 = Monday, 7 = Sunday, space separated), on which a habit is expected to be performed, in the :HABIT_WEEKDAYS: property.
WARNING!!!
Expect consistent behaviour only for “.+”-style habits. The “+”- and “++”-style habits are better, at least for now, to be used the original way.

- 3,192
- 14
- 42
I was currently searching for the same functionality and came across this solution from org-mode FAQ
** Daily meeting
<%%(memq (calendar-day-of-week date) '(1 2 3 4 5))>
It works for me. I am using Emacs 27.1 on Debian 11.

- 11
- 3
Make a repeating entry for Monday and then use Org's timeshift to create additional entries for Tuesday to Friday.

- 1,378
- 1
- 13
- 26
-
1
-
3@shackra For anybody still wondering, I think what he meant is just to create like five entries with the same name in parallel, just with different scheduled times. e.g. this one: http://emacs.stackexchange.com/questions/26610/multiple-scheduled-timestamps-for-one-task/26753 – xji Sep 01 '16 at 16:03