タスク管理データベースのワークスペースお引越し(6) : hkob の雑記録 (144)

はじめに

hkob の雑記録の第144回目は、タスク管理データベースのお引越しの6回目です。今日は Tasks に設定されているボタンオートメーションを実装します。その後、Launchpad のビューを構築していきます。必要に応じて各種数式をセットアップします。

Work now button automation

最初は Work now button automation です。日付もスプリントも設定されていない「いつかやる」タスクに対して、このボタンをクリックすると、タスクが開始されます。この際、現在の時刻と対応するスプリントも自動的に設定されます。

Work now button automation

Date property はトリガーされた時間から以下のように設定します。

Formula for Date value

また、Sprint property は Map を経由して現在の Sprint を検索して設定します。

Formula for Sprint value

動作確認を実施します。変更前の Someday task には日付もスプリントも設定されていません。

Verification (before)

Work now ボタンをクリックすると、Next step, Status, Sprint, Date のプロパティが全て設定されていることがわかります。

Verification (after)

この機能については、こちらの記事の下の方で解説しています。

hkob.hatenablog.com

Reset (Someday) button automation

次は Reset button automation です。上の Work now のリセットをするだけのボタンです。間違えて押してしまった時にすぐに戻せるようにするためだけに作っています。上で設定したものを全て消しているだけなので、これ以上の解説は必要ないかと思います。

Reset (Someday) button automation

Reset (Someday) ボタンを押すと見事に全てがリセットされました。

Verification (Reset)

Next action

ここから Launchpad のビューを構築していきます。まずは、Next action です。Launchpad のトップ項目となります。念のため Next step チェックボックスは用意していますが、ほとんどはカレンダータスクなので、Alfred の Start task を使ってしまいます。ただし、iPad や iPhone しかない場合にはこちらを利用します。テーブルを表示している時にはタイムライン側のタイトルが消せることに今気づいたので、Display status だけの描画にしました。こっちの方がスッキリしていいですね。

Next action

並び替えは Status、Date の順で行います。

Order in Next action

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

lets(
    d, prop("Date"),
    sd, d.dateStart(),
    f, "H:mm",
    m, "minutes",
    if(sd.empty() || sd.formatDate("HHmm") == "0000",
        "--- no time info ---",
        lets(
            ed, d.dateEnd(),
            t, today(),
            n, now(),
            taskTime, ed.dateBetween(sd, m),
            period, t.dateAdd(taskTime, m).formatDate(f),
            isToday, sd.formatDate("YYYYMMDD") == n.formatDate("YYYYMMDD"),
            shmStr, sd.formatDate(f),
            ehmStr, ed.formatDate(f),
            ifs(
                isToday && n < sd,
                    [shmStr, "-", ehmStr,  "(in ", 
                        today().dateAdd(sd.dateBetween(n, m), m).formatDate(f),
                        ")"].join(""),
                isToday && prop("Status") == "In Progress",
                    [shmStr, "-", n.formatDate(f), "[", ehmStr, "] ",
                        today().dateAdd(n.dateBetween(sd, m), m).formatDate("(H:mm ["),
                        period, "])"].join(""),
                isToday,
                    [shmStr, "-", ehmStr, "(", period, ")"].join(""),
                [shmStr, "-", ehmStr, " (", period, ")"].join("")
            )
        )
    )
)

Someday tasks

次のビューは Someday tasks です。Sprint と Date が未設定、Status が To-do のものを掲載します。最後の Ready? は依存元のタスクが全て完了しているという条件です。このタスクは上で設定した Work now ボタンを押すことで、Next action に昇格します。

Someday tasks

Ready? は以下のような数式になります。先ほど説明したように blocked by のタスクの中に完了していないタスクがなければチェックが入ります。

Formula for Ready?

プロパティは、Task ID, Task name, Work now button, Remain, blocking を表示しています。ここで Remain は、依存先の複数のタスクで日付が設定されている Tasks の中で最も直近のタスクまでの残日数を計算しています。数式は以下のようになりました。

Formula for remain

Sprint board

最後は Sprint board です。作成された Sprint board をインラインデータベースにしました。私の場合は、Sprint 間隔がちょうど1週間なので、週間カレンダービューがちょうどいいようです。

Sprint board

ページレイアウト

最後に各ページを開いた時のページレイアウトも設定しておきます。ヘディング部分には、Next step, Display status, Work now, Status を並べました。ページコンテンツとしては、Date, Link, blocked by, Summary を並べています。blocked by は前回の議事録を確認するときなどに非常に有効なので、アクセスしやすいところに置いています。

Headings and Page contents

プロパティグループは Action, Relations, Hidden の三つのセクションに分けています。Action は頻発には使用しない作業が必要な項目です。頻度が低いので詳細を表示したときだけ利用できるようにしています。Relations もあまり頻度の高くないものをまとめています。Hidden は基本直接アクセスすることがないものや参照のみのものなので、セクションごと隠れてしまってもいいものです。

Property group

おわりに

今回は、Tasks に関するボタンオートメーションを追加した上で、Launchpad のビューを設定しました。また、ページ表示した時のレイアウトも設定しました。明日は CLI ツールや Alfred Workflow の修正を行います。

hkob.notion.site