はじめに
hkob の雑記録の第147回目は、タスク管理データベースのお引越しの9回目です。昨日作成した Send mail に不具合があったので修正するとともに、ちょっと見直しをします。
今朝のメール実行結果
今朝、無事にメールは届いたものの、Check mail が Next action に入っていませんでした。

タスクのデータベースを見ると、Sprint が抜けてしまっていますね。設定忘れのようです。

タスクの見直し
Check mail 自体は Office へのメールリンクを用意しているだけで、中身も何もないページです。これが毎日作られるのも莫迦らしいところです。また、他の人がちゃんとやれている日報の記録に使えるのではと思い直しました。どうせ日報を書くのであれば、ネタがあると便利なので、完了したタスク一覧が日報に書き込まれると便利です。この仕組みを作り直してみましょう。
Send task mail の修正
Sprint はページが参照できないと設定できません。そのため、ページを作成後に Sprint だけ別に設定します。ページ名も日報に修正しておきました。

Sprint の数式は以下のようになります。ページ作成後には Week id や maps の all にもアクセス可能です。

ここから下のメール送信部は変更ありません。
完了タスクの転記
日報の本文に完了したタスクを記述しようと Notion の機能で頑張ろうとしましたが、ブロックの挿入では変数の値を利用することができないため実現できませんでした。そこで、ここは Alfred の力を借りることにしました。作成したワークフローは以下のようになります。キーワードは Daily report の省略形で dr としました。

スクリプトは以下のようになります。
require "notion_ruby_mapping" include NotionRubyMapping NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] } db = Database.find ENV["TASK_DB_ID"] pps = db.properties tpf = pps["Task name"].filter_ends_with("の日報") dp = pps["Date"] dpf = dp.filter_equals Date.today # 日報を取得 page = db.query_database(tpf.and dpf).first spf = pps["Status"].filter_equals "Completed" # 今日の完了タスクを一括取得 bbs = db.query_database(spf.and(dpf).ascending(dp)).map do |t| tdp = t.properties["Date"] sd = tdp.start_date =~ /T(\d+:\d+)/ ? $1 : "no_time" ed = tdp.end_date =~ /T(\d+:\d+)/ ? $1 : "no_time" BulletedListItemBlock.new( [ TextObject.new(t.title, "href" => t.url), TextObject.new(" #{sd}-#{ed}") ] ) end # 日報のページに完了タスクを箇条書きで記述 page.append_block_children *bbs # 日報のタスクを開始 page.properties["Next step"].checkbox = true page.save # 日報のページを表示 print page.url.gsub("https://", "notion://")
テスト実行
実行前の日報は以下のようになっています。

Alfred で dr とすると、Daily report が実行できます。

実行すると今日のタスクが箇条書きで本文に追加されました。このタスク名の部分にはページへのリンクを追加してあります。また、Next step のチェックが入ったので、タスクが自動的に開始されています。

おわりに
機能で終わりのはずでしたが、ミスを修正するとともに日報作成機能を追加しました。