はじめに
hkob の雑記録の第134回目は、現在時刻に最も近いカレンダータスクを開始する Start the nearest task Workflow を解説します。
これまでの Start the nearest task Workflow
Start the nearest task Workflow は開始時刻が最も近いタスクを開始するものです。開始時刻に最も近いタスクを取得するために、「minutes_difference」という数式を用意しています。現在時刻と開始時刻の分数の差の絶対値を値に持ちます。最も近いタスクは、この数字が一番小さいタスクということです。
prop("Start date").dateBetween(now(), "minutes").abs()
Workflow は以下のようになっています。後段の部分はこれまでと同様に Prefab に置き換えました。「start」とすると現在時刻に最も近い未完了タスクに対して、Next Step チェックボックスを True に設定します。一つ一つの設定を詳しくみていきます。
最初の start はこれまでと同様にキーワードなので特殊なことはしていません。引数はありませんので、No Argument になっています。
Run Script は以下のようになっています。今回は新しいページを作成するのではなく、minutes_difference 順に並べたページの最初のものを取得しています。このページに対して Next Step チェックボックスに true を設定しています。
Workflow の改修
昨日までと同様に簡単化してみます。Replace オブジェクトを削除するために、URL scheme の変更のみ修正しています。今回の修正はこれだけです。
require "notion_ruby_mapping" include NotionRubyMapping NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] } db = Database.find ENV["TASK_DB_ID"] dps = db.properties sp = dps["Status"] fp = dps["minutes_difference"] query = sp.filter_does_not_equal("Done").ascending(fp) query.page_size = 1 page = db.query_database(query).first page.properties["Next Step"].checkbox = true page.save print page.url.gsub("^https://", "notion://")
最終的にワークフローは Replace が外れただけで、大きな変更はありません。
ちなみに、こうやって作成されたタスクはデータベースオートメーションにより、さらに以下の自動化が実行されます。Next Step チェックボックスに True が設定された後の処理は昨日の Do it now Workflow と同様なのでここでは省略します。
おわりに
Start nearest task はカレンダータスクのうち、最も現在時刻に近いものを開始するものです。私の場合は授業や会議がカレンダーに登録されているので、それらを開始するときに「start」とタイプしています。
https://hkob.notion.site/hkob-16dd8e4e98ab807cbe3cf3cc94cdfe0f?pvs=4