ORG-MODE-特定の日にTODOステータスをトリガーしますか?


9

ticklerファイルまたはカレンダーを毎朝手動でチェックするのではなく、特定の日付にアイテムのステータスをTODOに設定するトリガーを作成するにはどうすればよいですか?

回答:


5

直接的な回答ではありませんが、代わりに期限とスケジュールのOrgのサポートを使用できます。

TODOアイテムを作成して、スケジュールされた日付を与えることができます。これは、Orgでは、タスクを実行する予定の日付と、それがいつアジェンダに表示され始めるかを意味します。(組織の議題ビューをまだ使用していない場合は、調査する価値があります!)

必要に応じて、期限を割り当てることもできます。たとえば、TODOを金曜日に作成し、実際に見たいときに次の水曜日にスケジュールします。次の金曜日までに完了する必要がある期限を指定してください。


7

これは私が毎朝使用して、すべてのtodoをくまなく調べて、期限が過ぎている場合は日付を今日に変更し、期限が過ぎている場合は次のアクションからアクティブに変更します。これは、私が1年間使用している自分のカレンダーのカスタムソリューションであるため、間違いなく自分の側でいくつかのカスタマイズが必要になります。私の記憶は、バージョン7および8 org-deadlineから変更があったことorg-modeで、セットアップで以前のバージョンを使用している可能性があります。現在のバージョンでは、追加の引数などが必要になる場合があります。追加のヘルプが必要な場合はお知らせください。時間が許す限り、今後数日間はその問題に取り組みます。

私が使用する正規表現は、見出しに2つの星があり、バッファの左端にあることを想定しています。独自のセットアップでは、おそらく正規表現の変更が必要になります。

(defun org-carry-forward-uncompleted-tasks ()
"Carry forward uncompleted tasks."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Active" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline)))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (> today deadline-time-stamp) ;; deadline is overdue
              (string= todo-state "Active") ) ;; todo-state equals "X"
          (org-deadline nil ".") )))))

(defun org-make-active-today ()
"Change task from Next Action to Active if deadline is less than or equal to today."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Next Action" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline) ))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (>= today deadline-time-stamp) ;; deadline less than or equal to today
              (string= todo-state "Next Action")) ;; todo-state equals "X"
          (org-deadline nil ".")
          (org-todo "Active") )))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.