見出し画像

Notion で(自分なりの)タスク・時間管理を行う「新たな」方法(休日判定編)

最近は、新年の抱負や、主に Obsidian について書いており、Notion 関連の記事を投稿するのは、なんだが、結構、久しぶりになってしまいましたが、
振り返ってみると、一ヶ月ほど前に、本マガジンのテーマでもある「ルーチン管理」について、改めて、長々と語っていたところでしたね。

その上で、データベースの「サブアイテム」機能を使った、ルーチンの整理法についても、簡単に紹介してみたわけですが、
今回の内容に関係するのは、後述するように、もう少し前に投稿した記事となります。

いきなりですが、平日と休日とで、あなたのルーチンは、どれくらい異なっているでしょうか?

私の場合、休日に仕事をすることは「ほとんどない」ので、仕事のルーチンは、基本的に、平日にしか表示して欲しくありません。

しかし、例えば、平日が祝日だったり、有給休暇を取ったりした日や、お盆休み、年末年始休暇などの期間中にも、
平日のルーチンがそのまま表示されてしまうと、プランの修正が(ルーチン数が多いほど)大変な作業になりますよね。

あるいは、休日の朝、仕事のタスクを目にした上で、プランから削除していくのは、精神衛生上、あまり良くないと考える人も多いでしょう。

そこで、もし、Google カレンダーで自分の休暇を管理しておけば、それに応じて、システムが「休日を判定してくれる」としたら、どうですか?

実は、Notion で「タスク・時間管理システム」を自分なりに構築していると、そういったことだって、自在に実現できてしまうのです!

と言っても、Google カレンダーから予定を取得する場合には、Apps Script が使える必要はありますが、是非、参考にしてみてください。


今日のプランに「休み」タスクを追加する

まぁ、色々とやり方はあるかと思いますが、「RoutineGarden」と名付けた私のシステムでは、「休み」ルーチンというものを、用意してあります。

これは、その日が「休日かどうかを判定する」ためだけの「セクションなし」のルーチンで、
つまり、そのルーチンタスクが「今日のプラン」に含まれていれば、その日は「休日」とみなされる、という仕組みを作っておくわけですね。

では、どうやってそのタスクをプランに含めるのかというと、Google カレンダーから他の予定を追加するのと、全く同じ方法で良いでしょう。

ちょっと難易度は高いかもしれませんが、以前の記事で解説した通り、

カレンダーに「休み」という終日の予定を入れておき、毎日、自動的に「今日のプラン」にタスクが追加(表示)されるに任せるだけです。

これで、以下のように、Google カレンダーに「休み」を入れておけば、土日でなくとも、いつでも「休日」として扱えるわけですが、

Google カレンダーに「休み」を入れておく

問題は、Notion 側で、どうやってそれを判定に利用するかですよね。

休日判定用のプロパティを追加する

実際には、よりスマートな方法もあるのかもしれませんが、とりあえず、私が、現在、採用しているのは、
簡単に言えば、ルーチンリストに「自分自身を対象とするリレーションプロパティ」を追加しておく、といった手法で、

「休み」プロパティを追加する

新しいルーチンを作成した際、そのプロパティに、必ず「休み」ルーチンが設定されるよう、テンプレートの方も更新しておきます。

テンプレートで「休み」ルーチンを設定しておく

これで、他の全てのルーチンからも、「休み」ルーチンのプロパティが参照できるようになるのですが、言っている意味が分かりますでしょうか?

つまり、全てのルーチンの「休み」プロパティにおいて、「休み」ルーチンが選択されている状態にしておき、
それを、以下のようにして、各ルーチンを「今日のプラン」に表示させるかどうか、判定する数式の中で利用する、というわけです。

「今日」プロパティの関数を更新する

そもそも、この関数については、次の記事で説明した通りですが、

改めて、新しい数式全体は、以下のようになります。

if(
	and(
		not(prop("終了")),
		dateBetween(today(), prop("開始日"), "days") + 1 > 0
	),
	if(
		empty(prop("予定日時")),
		let(
			day, day(today()),
			or(
				includes(prop("周期"), "毎日"),
				includes(prop("周期"), ifs(
					prop("休み").first().prop("今日"), "休日",
					includes([1, 2, 3, 4, 5], day), "平日",
					includes([6, 7], day), "土日"
				)),
				includes(prop("周期"), ifs(
					day.equal(1), "月曜日",
					day.equal(2), "火曜日",
					day.equal(3), "水曜日",
					day.equal(4), "木曜日",
					day.equal(5), "金曜日",
					day.equal(6), "土曜日",
					day.equal(7), "日曜日"
				))
			)
		),
		equal(formatDate(prop("予定日時"), "YYYY-MM-DD"), formatDate(today(), "YYYY-MM-DD"))
	),
	false
)

追加されたのは、次の行ですね。

prop("休み").first().prop("今日"), "休日",

つまり、「周期」プロパティに「休日」が設定されているルーチンについては、上述したリレーションプロパティ「休み」を確認し、
その日の「休み」ルーチンの「今日」プロパティが「真」なら、即ち「今日のプラン」に「休み」が含まれていれば、
元のルーチン(繰り返しの「周期」に「休日」を含んでいるルーチン)についても、「今日のプラン」に表示する、という仕組みになります。

ちょっと何を言ってるのか分からない、という人も多いかもしれませんが、
ともかく、これで、「平日」や「土日」だけでなく、「休日」という「周期」でも、ルーチンを設定することができるようになりました。

まとめ

今回は、またまた万人受けしないような、特にニッチな内容となってしまっている気もしますが、
年末年始休暇前から書きたいと思っていた、「休日判定システム」について、やっと紹介できたので、個人的には、満足です。

というのも、これは、長期休暇中にこそ欲しい機能だったので、
私自身、確か、年末年始休暇の直前に実装して、休暇中に動作を確認していた、という経緯があったりします。

ちなみに、この「休み」タスクは、あくまでも判定用なので、誤って「実行」したりすると、単にその日が「休日」判定でなくなるというだけでなく、
各ルーチンを「今日のプラン」に含めるかどうかの判定を行う関数に影響を及ぼし、バグってしまったりする恐れもあるので、要注意です。

また、そうなると、その「休み」タスクは、常に「先送り」されることになるというか、休日中は「今日のプラン」に残り続けることになるため、
例えば、「先送り」の数を数えたい場合などには、邪魔になってしまうかもしれません。

その辺は、現在の私の運用なら、特に問題は発生していないのですが、気になる人は、気になりそうですよね。

というか、実のところ、「RoutineGarden」においては、あまり「先送りの数を数える」ということ自体、重視していないどころか、
個人的には、全く頓着していないため、標準機能として備えていなかったのですが、そのことについても、いずれ、説明する必要があるでしょう。

実は、そういった「レビュー」機能の実装についても、色々と考えていることはあります。

そう言えば、しばらく Notion について書いていなかったので、他に何を紹介する予定だったか、思い出す必要もありそうですが、
ちょうど良い機会ですし、何か気になることでもあれば、気軽にコメントなど頂ければ幸いです。

ではまた。

いいなと思ったら応援しよう!