一度中断したタスクを再開するオートメーション: Notion Tips (133)

はじめに

Notion Tips の第133回目は一度中断したタスクを再開するオートメーションを解説します。このネタは、つばささんのこちらのポストでした。これを私の場合に当てはめて設計し直してみました。

インターフェース設計

せっかく昨日プロパティを減らす方向でいるのに、タスク再開のためにプロパティを増やしたくありません。現状 Next Step のチェックボックスだけで全てタスク管理ができているので、これをうまく有効利用することにしました。先頭の二つの Automation に加えて三つ目の Automation を追加します。

  1. Set start time: Status が To Do の状態で Next Step を True
    1. Start date → 現在設定されている時刻の先頭時刻をトリガー時刻に変更
    2. Status → In Progress に変更
    3. Finish date をクリア
  2. Set end time: Status が In progress の状態で Next Step を False
    1. Start date → 現在設定されている時刻の終了時刻をトリガー時刻に変更
    2. Status → Done に変更
    3. Finish date をクリア
  3. Restart task (新規作成): Status が Done の状態で Next Step を True
    1. Next Step を False に変更
    2. 以下のプロパティを持つ新規タスクを作成
      1. タイトルの後ろに (2) などの番号を追加。番号は前のものより一つ増やす
      2. Status を In progress に設定
      3. Start date → トリガー時刻から 1 時間分の時間範囲を仮に割り当て
      4. Next Step を True に設定
      5. Sprint, Project, Link などはトリガーされたタスクからコピー

リスタートした段階では、タスクは実行中になるので、2 の Automation を実行後の状態と同じような状態になることを期待してこのように設定しています。

オートメーションを実装

設計が終われば実装するだけです。書かれた通りにオートメーションを作るだけです。Task name の部分と Start date の部分だけが切れてしまった見えないので、下で解説します。それ以外の部分は設計のところで書いた通りに設定しているだけです。

Restart task Automation

Task name の数式は以下のようになっています。

  • org_title: トリガーページのタスク名を格納します。
  • last_num_str: タイトルの最後に付いている「(数字)」の部分を取得します。
  • last_num: last_num_str がなければ 2 にします。そうでなければ、「()」を取り除いた部分を数値化して + 1 した数値とします。
  • 最後にタスク名が既存の数値を取り除き、last_num の数値を追加します。
lets(
    org_title, prop("トリガーページ").prop("Task name"),
    last_num_str, org_title.match("\((\d+)\)$"),
    last_num, last_num_str.empty() ? 2 :
      last_num_str.substring(1, -1).toNumber()+1,
    [org_title.replace(" \(\d+\)$", ""), " (", last_num, ")"].join("")
)

もう一つの Start date の数式は以下のようになっています。トリガーされた時間から 1 時間分の時間範囲を設定しています。

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

これに合わせて、Set start time の Start date も日付が設定されていない場合には、同様に 1 時間分の時間範囲を設定するように変更しました。

lets(start_date, prop("トリガーページ").prop("Start date"),
    end_date, start_date.empty() ? prop("トリガーされた値").dateAdd(1, "hours") :
      start_date.dateEnd(),
    prop("トリガーされた時間").dateRange(end_date))

動作確認

動作の様子を動画にして、X にポストしました。こんな感じで Done にしてしまったタスクを後から再開可能です。会議などでどうしても作業が中断されることがあるので、これまで手動でタスクを作成していましたが、これで楽になりました。

おわりに

今回は一度完了にしてしまったタスクを自動的に再開するオートメーションを解説しました。X ではいろんな人がさまざまなアイディアを提案しています。是非、自分の利用しているものに導入できる場合には、いろいろ取り入れるといいですね。

hkob.notion.site