はじめに
以前、Notion で日報・週報・月報を作成する記事を書きました。
しばらくうまく動いていたのですが、月をまたぐところでボロが出ました。3月5週目と4月の1週目で 2 回週報に表示される記事がまたいでしまうという問題です。ちょうど昨日、日付・週(日曜始まり)・週(月曜始まり)・月・クオータを一意に示す文字列を作成するには?という Notion ページを作成した時に、formatDate の "W" オプションを知りました。これは、その日の前の月曜日が何週目にあたるかを計算してくれるもので、これを使うと週を一意に表すことができます。今週の場合だと、3月29日(月)からの1週間が全て 13 という数値になります。これを使って、週報のフィルタリングを行うようにデータベースを修正したいと思います。
タスクへの週文字列の追加
まず、全てのタスクの方に週文字列を追加します。今週のものには「2021-13」という文字列が設定されます。W を二つ重ねているので、一桁の場合にも上に「0」が付きます。これは文字列で並び替えができるようにするためのテクニックです。
formatDate(prop("日付"), "YYYY-WW")
「今週?」フラグの修正
今週? のチェックは上記の文字列で簡単に比較できます。以下のように変更しました。
prop("週文字列") == formatDate(now(), "YYYY-WW")
週報に表示される日報のフィルタリングを変更
これまで、以下のようなフィルタリング設定を行っていました。月報へのリンクでフィルタを行い、その月の週番号でフィルタしていました。
改定後は以下のような感じになります。月報へのリンクがなくなってスッキリしました。
月報テーブルの削除
これまで月報は別テーブルとして、リレーションの形で週報を取り込むことにしていました。しかし、週報のフィルタリングで月報の絞り込みがなくなったので、別テーブルに起こす必要性がなくなりました。そこで、日報、週報、月報と同じく「タスク」データベースで月報も管理することにしました。月報は、週報を「月初日」でフィルタリングすることで行います。
週報をどちらの月に所属させるかは、週報の置き場所で決めればよいです。週報自体はその週のどこかに置いてあれば、勝手に「今週?」で引っ張られるためです。週報を3月分の方に起きたければ、3 月中におけばよいですし、4 月分に起きたければ、4月中におけばよいです。3 月の月報を書いている時には、3/31 において、4月の月報を書く時に4/1 に移動してもよいかもしれませんね。
おわりに
月報のページを一度も書くことなく、月報のシステムが書き変わってしまいました。動かしてみるといろいろと不具合が見つかりますが、その場ですぐに修正できるのが Notion のいいところですね。