NotionでOmnifocus風のタスクステーテスを実現する方法
こんにちは!copiです。
今日は、Notionを使ってObsidian風のタスク管理を行う方法について話します。
この記事を通じて、効率的なタスク管理システムを構築し、日々の生産性を向上させましょう。
OmnifocusとNotionの比較
OmnifocusもNotionもどちらもタスクを管理することができます。
特にOmnifocusはタスク管理に特化しているため、Notionよりもタスク管理に向いているかもしれません。
ですがNotionはドキュメントと一緒に管理できたり、どちらが良いかは人次第なので一概にどちらが良いとは言えません。
今回NotionでOmnifocusっぽいタスク管理を行う方法を紹介するのは、僕自身がNotionをタスク管理以外でも使っていてOmnifocusも使っていたけどNotionで同じようなことができないかなと思ったからです。
Omnifocusっぽいステータスの再現方法
Omnifocusのタスクステータスを再現するためには、データベースを作成していくつかのプロパティを設定する必要があります。
中には関数も使うプロパティもあるので、ある程度Notionの関数について知識がある方が記事を理解しやすいですが、一度設定してしまえばOmnifocusっぽいタスク管理ができるようになります。
実現方針
今回実現するために1つの方針があります。
**基本的なフィルタリング項目はフィルターで設定せずじゃなく関数を使う**。
ということです。
例えば期限切れのタスクの条件や予測の条件など、Omnifocusで標準搭載されているものは関数を使っています。
関数ではチェックボックスのonかoffで表示しておいて、Notionのフィルターではチェックボックスがonかoffかだけでフィルタリングできるようにしています。
準備
まずはタスク管理用のデータベースを作成します。
このときデータベースの依存関係をチェックしてください。
タスクが特定の別タスクと連動してもよいように設定します。
この記事ではプロパティは英語で記載していますが、自分がわかりやすいような日本語でも問題ありません。
データベースが作成できたら、下記のプロパティを設定します。
プロパティ | タイプ | 説明 |
Status | ステータス | タスクのステータス |
Done | チェックボックス | タスクが完了したかどうかを示すプロパティ |
Overdue | 関数 | タスクの期限が過ぎているかどうかを示すプロパティ |
Flat | チェックボックス | 重要なタスクを示すプロパティ |
Forecast | 関数 | タスクの期限を示すプロパティ |
Actionable | 関数 | 実行可能なタスクを示すプロパティ |
Context | マルチセレクト | タスクのコンテキスト |
Start Date | 日付 | 着手開始日 |
プロパティができたら、次に関数のプロパティ設定をしていきます。
Status(ステータス)の設定
ステータスはOmnifocusの色と合わせた絵文字の丸を使っています。
ここは自分の好みに合わせて変更しても問題ありません。
1
if(prop("Done"), "🟢", if(prop("Overdue"), "🔴", if(prop("Flag"), "🟠", prop("Forecast") ? "🟡" : if(prop("Actionable"), "⚪" , "⚫"))))
それぞれの絵文字の意味は下記の通りです。
ステータス | 説明 |
🟢 | 完了 |
🔴 | 期限切れ |
🟠 | フラグ付き |
🟡 | forecast |
⚪ | 未着手 |
⚫ | 着手不可能 |
今回絵文字のみでステータスを表現していますが、テキストでステータスを表現したり絵文字をあせてテキスト表示も可能です。
例えば完了であれば🟢の部分を
1 2
"完了" // テキストだけ "🟢 完了" // 絵文字とテキスト
に変更すれば、対応できます。
絵文字とテキストを組み合わせる場合は絵文字の後に半角スペースいれるのがおすすめです。
Deadline(期限切れ)の設定
期限切れは期限が過ぎているかどうかを判定する関数で、チェックボックスでonかoffか表示します。
これ単体で使うというよりはNotionのフィルターでチェックボックスがonかoffかで期限切れのフィルタリングをしたいときに使います。
1
prop("Deadline") ? dateBetween(prop("Deadline"), now(), "days") <= -1 : false
着手可能か(Actionable)の設定
着手可能かはタスクが着手可能かどうかを判定する関数で、チェックボックスでonかoffか表示します。
ここはちょっと複雑なので意味がわからなければそのまま使ってください。
1 2 3 4 5 6
lets( isNotActionableTag, includes(map(prop("Context"), current != "Waiting" && current != "Pending"), false), isActionableDate, if(prop("Start Date").empty(), true, prop("Start Date") < now()), isActionableTask, if(prop("Blocked by").empty(), true, not map(prop("Blocked by"), current.prop("Done")).includes(false)), not prop("Done") and !isNotActionableTag and isActionableDate and isActionableTask )
意味を紹介すると下記の4つの条件を満たしているかチェックしています。
- ContextでWaitingやPendingが含まれていないかどうか
- Start Date(開始日)が設定されているかどうか、設定されている場合は開始日が現在日以降かどうか
- Blocked by(ブロックされているタスク)が空かどうか、空でない場合はブロックされているタスクが完了しているかどうか
- タスクが完了していないかどうか
まとめ
NotionでOmnifocusっぽいタスク管理ステータスを実現することで、Omnifocusに慣れた人ならNotionを使って同じような感覚でタスク管理を行うことができます。
完全にOmnifocusと同じタスク管理がNotionでできるわけではありませんが、Notionの柔軟性を活かしてOmnifocusのようなタスク管理を行うことができるようになりました。