タスクを Notion またはブラウザで開く : Notion 解説(31)

(後日追加) ここで説明している Notion workflow はこちらで配布しています。 github.com

1. はじめに

タスク作成時にプロジェクトを設定 : Notion 解説(30) - hkob’s blogで紹介した Alfred workflow を github で公開しました。

github.com

ver 1.1 の時にタスク終了部分の環境変数化でバグを埋め込んでしまったので、ver 1.2 で修正しています。すでに取得済みの方は新しいものに差し替えてください。それだけだと申し訳ないので、タスクを Notion で開く「ot」コマンドを追加してみました。これは、その「ot」の作成記録です。

2. 設定した workflow

見た目はこんな感じです。ポモドーロを設定する「pn」とやることが似ているので並べています。

f:id:hkob:20210716092507p:plain
ワークフローの外観

2.1 Script filter

Script Filter についてはほぼ pn と同じです。Return で開き、Shift+Return でタスクを終了するようにしてまいます。

f:id:hkob:20210716092756p:plain
Script Filter 画面

スクリプトもほぼ同じですが、ポモドーロと違って非ポモ?のタスクも全部表示するようにしています。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 タブ区切りテキストの分離

引数は「idurl」の形式になっています。そこで、「Split Arg to Vars」にて引数に分離しています。

f:id:hkob:20210716093151p:plain
引数の分離 (Split Arg to Vars)

2.4 変数を引数に変更

分割した二番目の変数が URL なので、Argument に split2 を設定します。

f:id:hkob:20210716093357p:plain
2番目の変数を引数に変更

2.5 環境変数 OPEN_BY_APP の判別

Notion をアプリで開きたい人、ブラウザで開きたい人を判別するために「OPEN_BY_APP」という環境変数を用意しました。この変数が true の時にはアプリで開きます。true でない場合には、そのまま Open URL に渡すことでブラウザで開きます。

f:id:hkob:20210716093521p:plain
Conditional

2.6 アプリで開くための URL 変更

ページをアプリで開くためには、URL スキームを変更すればよいです。https の部分を notion に書き換える処理を加えています。この URL を Open URL に渡しています。

f:id:hkob:20210716093725p:plain
URL スキームの変更

2.7 Notion のアクティベート

Notion が裏に隠れている場合も考えて、Run Script で Notion をアクティベートしました。これで Notion が画面の手前に表示されます。

function run(argv) {
  let notion = Application("Notion")
  notion.activate()
  return argv
}

3. おわりに

バグフィクスのついでに新しい機能を追加してみました。これで Notion を開くのも楽になりました。


はてなブログに書いた Notion 記事一覧