1. はじめに
昨日の
📄
親タスクのステータスを自動設定するボタンの設置
という記事で、以下のような形でサブタスクの時間範囲を自動的に設定し、さらに進捗を自動計算してくれるシステムを構築しました。
残念ながら完了の部分はフォーミュラでチェックボックスを使ってしまっています。せっかくステータスという欄があるのにもったいないことです。実は、昨日もう一つの新機能として、アクションを伴うことができるボタンが公開されました。せっかくなので、このボタンを使って親のステータスを自動設定してくれるように改修したいと思います。
2. 進捗率フォーミュラの変更
昨日は、進捗率のフォーミュラを次のように記述していました。
round(((prop("ステータス") != "Not started") ? toNumber(prop("ステータス") == "Done") : prop("_子の進捗率")) * 1000) / 1000
やっていることは以下のとおりです。
- 末端のタスクが Not started でなくなったら、Done の時だけ 1 にする
- 親のタスクはこの進捗率をそのまま設定する
今回、親のステータスも更新してしまうので、条件を_子の進捗率
が存在したらという形に変更します。
round((empty(prop("_子の進捗率")) ? toNumber(prop("ステータス") == "Done") : prop("_子の進捗率")) * 1000) / 1000
この変更でも値が変わらないことを確認しました。
3. ボタンの設置
ボタンは以下の二つのことができればいいです。
-
ステータスが Done ではなく、
_子の進捗率
の進捗率が未入力でなく、0より大きい時にはステータスを In progress に設定 -
ステータスが Done ではなく、
_子の進捗率
の進捗率が未入力でなく、1と等しい時にはステータスを Done に設定
4. テスト実行
作成できたので実行してみましょう。ステータスの更新は一番上に置いてみました。ボタンを押す前はこんな感じになっていて、親のステータスはすべて Not started になっています。
実行後の画面はこんな感じです。ちゃんと必要な項目が更新されています。完璧ですね。もう完了フォーミュラはいらないですね。消しましょう。
5. おわりに
改めてボタンの強力さを感じました。API だとレート制限でかなり待たされますが、ボタンだと一瞬で終わるので感動しますね。昼休みの時間に完成してしまったのがすごいな。