デイリーノートを開く Alfred workflow : hkob の雑記録 (251)

はじめに

hkob の雑記録の第251回目は、たいがさんがポストしていたデイリーノートを簡単に開く Alfred ワークフローを作成した件を解説します。

たいがさんのポスト

たいがさんがこんなポストをしていました。デイリーノートという概念は面白いですね。

私のタスクデータベースは、今週と来週のスプリントにおける未完了タスクを毎朝メール送信するようになっています。このトリガのために、毎朝ページが一つ作成されるので、それを日報用に使っていました。ただ、最近は様々な Notion のテストやちょっとしたメモをこの日報ページを使って実施するようにしています。以前のワークスペースではテストスペースというページを使っていましたが、山のようにテスト結果が溜まりページ自体を開くのが重くなっていました。今は、必要であれば Notion AI が探してくれるので、ページが分散してもなんとかなりそうです。そういう意味では私のこのページもデイリーノートに近いものかと思います。

この未完了の日報は Launchpad を開くと一番上にあるので、開きやすい場所にはあるのですが、確かに数ステップはかかっていて不便です。そこで、これを即座に開く Alfred ワークフローを作成してみました。作成後に投稿したポストがこちらです。

F6 を押すと Notion API でページを検索し、そのページを Notion で開きます。その後、Notion アプリに制御を渡すようになっています。

デイリーノートを開く Alfred workflow

ここで実行している Ruby スクリプトもポストしました。

高速化のためのリファクタリング

なかなか使ってみて便利なのですが、やはり Notion API が絡むと1テンポ遅れるのが気になりました。そこで、page_id をキャッシュするリファクタリングを行いました。どうせ1日一回 page_id を取得したら、それはその日のうちには変更されることはないためです。この件を以下のようにポストしました。

スクリーンショットだとみにくいので、ソースコードをこちらに貼っておきます。読んでもえらばわかりますが、Dropbox の直下に .today_page_url という隠しファイルを用意します。その日に最初にどこかのマシンで F6 を押すとファイル更新日が昨日であることが確認できるので、その場合のみ Notion API を実施して取得した URL を .today_page_url というファイルに保持します。2回目以降はこのファイルの更新日付が今日になっているので、ファイルを中身を取り出し URL とします。当初は page_id だけを記録するつもりで .today_page_id としていましたが、url に変更してしまったのでスクリーンショットを撮った時からファイル名だけ変更しています。

require "date"

date = Date.today

fname = "/Users/hkob/Dropbox/.today_page_url"

url = ''
if File.exist?(fname) && File.mtime(fname).to_date == date
  f = File.open fname
  url = f.gets chomp: true
  f.close
else
  require "notion_ruby_mapping"
  include NotionRubyMapping
  NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] }

  db = Database.find ENV["TASK_DB_ID"]
  dp = db.properties
  date = Date.today
  date_str = "#{date.month}#{date.day}日の日報"
  query = dp["Task name"].filter_equals(date_str).and(dp["Date"].filter_equals(date))
  page = db.query_database(query).first
  url = page["url"].gsub("https://", "notion://")
  f = File.open fname, "w"
  f.puts url
  f.close
end
print url

おわりに

これまで F8 で多言語のテキストを翻訳したテキストがクリップボードに入り、F7 で貼り付けられるようになっていました。F7 自体は現在開いているページにテキストを貼り付けてしまうので、F6 を先にタイプすることで、デイリーノートに貼り付けることが可能となります。それも踏まえて近いところのファンクションキーに機能を割り当てていました。

hkob.notion.site