GTDテンプレートにスプリント自動設定を追加: Notion Tips (191)

はじめに

Notion Tips の第191回目は、昨日まで解説してきたテンプレートにスプリントの自動設定のオートメーションを組み込んでみます。この解説は 日付を設定したらスプリントを自動設定するオートメーション: Notion Tips (164) - hkob’s blogでしているものです。これを執筆したのが、12/4 でテンプレートを提出した後でした。いつか機会があったら、今回の Set sprint も同梱したテンプレートを配布したいと思っています。ちなみに、私のタスク管理では Ruby スクリプトでスプリント名の修正なども実施していますが、こちらは Notion の機能だけで実現するように作り込んでみます。とりあえず、今のデータベースを複製してタイトルだけ修正してみました。

Title の修正

Map データベースの作成

テンプレートの一番下の Databases の中に Map データベースをフルページで作成します。今回、他のページのものと間違えてリレーションしないように「(new)」という接尾子をつけておきます。

Map データベースの作成

とりあえず、「all」という一つのページを作成しておきます。

all ページの作成

Sprints に Map へのリレーションを追加

Sprints から 1対他のリレーションを貼りたいので、Sprints 側から先ほどの Map へのリレーションを作成します。プロパティ名は (new) は付けなくともいいでしょう。制限を1ページに設定しておきます。

Sprints に Map へのリレーションを追加

スプリントの日付調整

配布状態の Current sprint にはテンプレート作成時の日付が入っているので、今週に修正しておきます。スプリントの日付はそのままでは修正できないのですが、Sprints データベースを表示し、行を選択した後で、上の Dates をクリックすると日付を変更することができました。私の場合は月曜始まりにしているので、12/30 から 1/5 までに設定しました。

スプリントの日付調整

この状態で Sprint の自動更新を設定しておきます。データベースの設定から「カスタマイズ」を選び「スプリントの自動化」をオンにします。次のスプリントは 1/6 に始まると書いてあるので問題なさそうです。

Sprint の自動更新

スプリント自動更新時には自動的に次のスプリントの日付も設定されます。今回は、設定されていないので手動で付けておきます。

翌週の日付も設定

Sprints に週番号を設置

Tasks と同様に Sprints にも week_id を設置します。数式は以下の通りです。

prop("Dates").formatDate("GGGG-WW")

week_id を追加

Map への自動リンク設定をするオートメーションを追加 (Sprints)

Sprint name は先ほど記述した week_id に設定します。私のタスク管理ではスクリプトが自動で修正しますが、今回は手動にします。ただし、その設定時に先ほどの Map への自動リンクを設定するオートメーションを設定しておきます。Sprint name を編集した時に Map に all をセットします。

Map への自動リンク設定をするオートメーション

Sprints の名前を week_id からコピー

オートメーションを設定後に Sprints の名前を Sprint name のところにコピーします。

Sprints の名前を week_id からコピー

ここで、Map データベースを表示してみます。先ほどのオートメーションにより、2025-01 と 2025-02 の Sprints が自動的に設定されていることがわかります。これは新しいスプリントが設定されたら翌週の名前を毎回設定してください。Map が追加されないと、この後のスプリント自動設定がされないためです。

Map データベース

Tasks に Map へのリレーションを追加(片方向)

今度は Tasks に Map へのリレーションを追加します。Map から逆参照すると大変なことになるので、Tasks からの一方向リンクとします。Map には all しかいないので、こちらも制限は 1 ページで十分です。

Tasks に Map を追加

Map への自動リンク設定をするオートメーションを追加 (Tasks)

Sprints と同様に Tasks の方にも Map へのリンクが必要です。今回は Tasks が作成された時に自動的に Map へのリンクが追加されるようにします。

Tasks 作成時に Map へのリンクを追加

日付設定時に Sprints を設定するオートメーション

いよいよ今回の目的の Set sprint オートメーションです。Sprints が設定されていないタスクに対して、日付が設定された時にオートメーションを発動させます。

Set sprint オートメーション

数式の部分は以下のようになります。これをペーストしてもうまく変数に合わないので、上の式を見ながら自分でタイプした方がいいです。

lets(
    week_id, prop("トリガーページ").prop("week_id"),
    prop("トリガーページ").prop("Map").first().prop("Sprints").filter(current.prop("week_id") == week_id)
)

動作確認

まず動作確認のために、Someday にタスクを一つ追加してみます。

テストタスクを追加

ページを作成しただけなのですが、Map には all が設定されていることがわかります。

Map リンクを確認

ここで、Duo の部分に今日の日付を設定してみました。日付から week_id が設定され、それにマッチする Sprint が設定されていることがわかります。

日付からスプリントが設定されているのを確認

Mention to date に Sprint 設定を追加

日付を自分で設定した場合には、Sprint が設定されます。しかし、今回のテンプレートの肝である Mention to date で設定した場合、オートメーションからさらにオートメーションを追加で呼び出すことができません。このため、Mention to date にも Sprint 設定と同じ処理を追加しました。

Mention to date にスプリント設定を追加

ただし、week_id は日付設定前の値になってしまっているので、数式内で計算します。

Sprint 設定の数式

数式の部分は以下のようになります。これをペーストしてもうまく変数に合わないので、上の式を見ながら自分でタイプした方がいいです。

lets(
    week_id, prop("トリガーページ").prop("updateDatePreview").formatDate("GGGG-WW"),
    prop("トリガーページ").prop("Map").first().prop("Sprints").filter(current.prop("week_id") == week_id)
)

すでにスプリントが設定されているかどうかは判定していないので、現在の Sprint を上書きするはずです。次の月曜日を指定して来週の Sprint に変わるかを確認してみます。ちなみに次の月曜日であれは @ne m と書くだけでよいです。やはり日付メンションは楽ですね。

日付メンションの設定

正しく、Sprint が再設定されています。

Sprint 再設定を確認

Work now ボタンを追加

テンプレートでは、Someday タスクを Now working にドラッグすることで、スプリントの設定などをフィルタで設定していました。これをボタンで設定します。まず、Someday のビューにのみ、Work now というボタンを用意しました。

Work now ボタンを追加

Work now の中身は以下のようになっています。

Work now の中身

Sprint これまでとほぼ同様ですが、week_id はトリガーされた時間で作成しています。

Sprint 設定の数式

let(
  week_id, prop("トリガーされた時間").formatDate("GGGG-WW"),
  prop("このページ").prop("Map").first().prop("Sprints").filter(current.prop("week_id") == week_id)
)

Due は日付範囲として 1 時間の幅を持った時間に設定しました。

Due 設定の数式

let(sd, prop("トリガーされた時間"),
  sd.dateRange(sd.dateAdd(1, "hours"))
)

ここで、先ほどの Someday task で Work now を押したところ、ちゃんと Now working に移動しました。

Work now の動作確認

おわりに

Notion Tips の最終回として、配布したテンプレートに Sprint 自動設定オートメーションを追加してみました。リレーションやオートメーションの学習になるので、是非手を動かしてみて動作を確認してみてください。昨年の 12月1日から始まったブログ執筆も2回目の年越しを迎えました。とりあえず、Notion Tips に関しては今回で終了としたいと思います。明日からはまた新しいネタで執筆が続けられればと思っています。これまで Notion Tips をご覧いただき、本当にありがとうございました。

hkob.notion.site