Ivan Kanis <i...@kanis.fr> writes: > Hi, > > I need to have org agenda (and then appt) manage an event once a week. > The catch is that is should happen at a random day and hour. > > My thinking is that populating programmatically a year entry is probably > the sanest way to go about it. > > Has anyone else done it?
This is not an arcane scientific solution, but should give a random timestamp for between tomorrow and the end of the current week. You could write a function (using run-with-timer) that runs this sunday at 00:00h and inserts a todo item with the returned timestamp into an agenda file: #+begin_src emacs-lisp (defun tj/return-random-timestamp-this-week () "Insert random timestamp for this week." (interactive) (let* ((cal-info (decode-time (current-time))) (dow (nth 6 cal-info)) (year (nth 5 cal-info)) (month (nth 4 cal-info)) (day (nth 3 cal-info)) (hour (nth 2 cal-info)) (random-day (+ day (1+ (random (- 5 dow))))) (random-hour (random 23)) (random-minute (random 59)) (random-second (random 59))) (format-time-string "%D %R" (encode-time random-second random-minute random-hour random-day month year)))) #+end_src #+results: : tj/return-random-timestamp-this-week #+begin_src emacs-lisp :results raw (let (res) (dotimes (i 10 res) (setq res (concat res (format "%d: %s\n" (1+ i) (tj/return-random-timestamp-this-week)))))) #+end_src #+results: 1: 07/17/14 17:39 2: 07/16/14 18:18 3: 07/18/14 19:21 4: 07/17/14 12:58 5: 07/16/14 15:30 6: 07/16/14 16:17 7: 07/16/14 04:10 8: 07/16/14 21:37 9: 07/17/14 19:22 10: 07/16/14 13:39 -- cheers, Thorsten