(後日追加) ここで説明している Notion workflow はこちらで配布しています。 github.com
1. はじめに
タスク作成時にプロジェクトを設定 : Notion 解説(30) - hkob’s blogで紹介した Alfred workflow を github で公開しました。
ver 1.1 の時にタスク終了部分の環境変数化でバグを埋め込んでしまったので、ver 1.2 で修正しています。すでに取得済みの方は新しいものに差し替えてください。それだけだと申し訳ないので、タスクを Notion で開く「ot」コマンドを追加してみました。これは、その「ot」の作成記録です。
2. 設定した workflow
見た目はこんな感じです。ポモドーロを設定する「pn」とやることが似ているので並べています。
2.1 Script filter
Script Filter についてはほぼ pn と同じです。Return で開き、Shift+Return でタスクを終了するようにしてまいます。
スクリプトもほぼ同じですが、ポモドーロと違って非ポモ?のタスクも全部表示するようにしています。API で URL が帰ってくるようになったので、id とともに URL を次のタスクに渡しています。
require './notion.rb' # page を取得し、利用しやすい Hash に変換 pages = get_notion_pages({ filter: { and: [ {property: TASK_DATE, date: {equals: Date.today}}, {property: TASK_DONE, checkbox: {equals: false}}, ] }, sorts: [{"property": TASK_POMO, "direction": "ascending"}], }).map { |p| prs = p["properties"] { id: p["id"], url: p["url"], title: (prs[TASK_NAME]["title"][0]["plain_text"] || ""), } } items = { items: pages.map do |p| { # タイトル title: p[:title], subtitle: "Return to open, Shift+Return to finish", # 次のモジュールに渡す引数(id, URL) arg: [p[:id], p[:url]].flatten.join("\t") } end } print JSON.dump(items)
2.2 タスクの終了
Shift + Return のタスク終了処理は「pn」と同じです。そのため、すでに作成ずみの Run Script に渡しています。
2.3 タブ区切りテキストの分離
引数は「id
2.4 変数を引数に変更
分割した二番目の変数が URL なので、Argument に split2 を設定します。
2.5 環境変数 OPEN_BY_APP の判別
Notion をアプリで開きたい人、ブラウザで開きたい人を判別するために「OPEN_BY_APP」という環境変数を用意しました。この変数が true の時にはアプリで開きます。true でない場合には、そのまま Open URL に渡すことでブラウザで開きます。
2.6 アプリで開くための URL 変更
ページをアプリで開くためには、URL スキームを変更すればよいです。https の部分を notion に書き換える処理を加えています。この URL を Open URL に渡しています。
2.7 Notion のアクティベート
Notion が裏に隠れている場合も考えて、Run Script で Notion をアクティベートしました。これで Notion が画面の手前に表示されます。
function run(argv) { let notion = Application("Notion") notion.activate() return argv }
3. おわりに
バグフィクスのついでに新しい機能を追加してみました。これで Notion を開くのも楽になりました。