従属依存関係タスク作成オートメーション (個人記録): Notion Tips (136)

はじめに

Notion Tips の第136回目は依存関係のある複数のタスクを自動生成するオートメーションを解説します。「Notion API 活用術」の中で紹介したコマンドラインツールで紹介した nt コマンドと同機能のものです。

nt コマンド

書籍の中で紹介している「nt」コマンドは単一のタスクを生成するだけのコマンドでした。書籍に掲載しているテンプレートの方では、現在は nt コマンドを以下のように拡張していることを説明しています。

case CMD_NAME
when "nt"
  previous_id = nil
  NotionCache.instance.wait = 0.4
  db = Database.find(DATABASE_ID)
  ARGV.join(" ").split("|").each do |title|
    page = db.create_child_page do |p, pp|
      pp["タスク名"] << title
      pp["前タスク"].relation = previous_id if previous_id
    end
    previous_id = page.id
  end
  exit # nt コマンドの時には Notion を開かない

これにより、コマンドラインから以下のように実行すると、Task 1, Task 2, Task 3 という3つのタスクが依存関係が設定された状態で作成されます。

nt Task 1|Task 2|Task 3

インターフェース設計

テキスト系のオートメーションはトリガーをどう設計するかが難しいです。Mention to date はメンション作成後に「.」を書くことで、メンションが書き終わったことを知らせることができました。今回末尾が「|」になった時設定してしまうと、 Task 2 を書き始める前にオートメーションが発動してしまいます。そこで、以下のような手順でタスク分割をすることにしました。

  1. Task 1|Task2|Task 3 とタイプする。
  2. タスク名の先頭に戻り「|」をタイプする。文字列は「 |Task 1|Task 2|Task3」となる。
  3. オートメーションを発動する
  4. まず、「 Task 2|Task 3」という依存関係先のタスクを作成する。その際に元のタスクから引きづける属性をコピーする。
  5. 元のページのタスク名は「Task 1」のみに変更する。
  6. 分割された「 Task 2|Task 3」の先頭に「 | 」をタイプしてさらに分割する。

オートメーションでは再帰処理は実現できないので、手動で再帰を実現します。

オートメーションの作成

上記のことを踏まえて設計した「Create blocking tasks」オートメーションは以下のようになりました。順番に解説していきます。

作成したオートメーション

  1. トリガーは「Task name」が「|」で始まるにしています。
  2. まず、tasks という変数を定義します。Task name を「|」で区切りますが、今回「|」の前には文字がないはずなので、 slice(1) で最初の要素を取り除きます。

     prop("トリガーページ").prop("Task name").split("|").slice(1)
    
  3. このページの依存先 (blocking tasks) としてページを新規作成します。属性は以下のようになります。

    1. Task name: tasks から最初の要素を取り除き、再度「|」で連結します。
    2. blocked by: 作成したページからトリガーページは依存元になるので、blocked by にトリガーページを登録します。
    3. Sprint, Proejct, Assignee: トリガーされたページのものをそのままコピーします。
  4. トリガーページの Task name は以下のように先頭の要素のみにします。

     prop("tasks").first()
    

以上で終了です。

動作確認

今回も予告として X に動作状況をポストしました。Task 1|Task 2|Task 3|Task 4 という文字列から 4 つの依存関係タスクを作成しています。

おわりに

今日は、依存関係を含んだタスク群を登録するオートメーションを作成しました。nt コマンドは便利だったのですが、依存関係以外の情報を格納できませんでした。オートメーションは一括では作成できず、一段階ずつ手作業が必要になりますが、スプリントやプロジェクトの情報は自動的に引き継ぐので便利かと思います。

hkob.notion.site