iPhoneのShortcutsでNotionのページを探す【サンプルあり】

はじめてのNotion API

Notionのページを検索したい

日本で人気が急上昇し始めた、情報を整理するための高機能なメモアプリがNotionです。タスク管理やメモ同士のリンクなど、アイデア次第でいろいろなことができる非常に強力なアプリで、特に他のアプリと連携することで真価を発揮します。NotionはAPIを提供しており、APIを使えば他のアプリとの連携ができるようになります。

iPhoneに標準で搭載されているShortcutsを使えば、Notion APIをかんたんに扱えるようになります。Shortcutsを使えばNotionのページを検索するアプリを自分で作ることができます。この記事ではShortcutsを使った検索アプリの作り方を書いています。応用すれば便利な使い方ができますので、ぜひ作ってみてください。

今回は指定したキーワードの検索結果をリスト化して、選択したページをNotionで開くアプリを作ります。作成するショートカットのサンプルはこちらからダウンロードできます

Shortcutsを使ってデータベースを検索する

Notion APIを使うためには事前に準備が必要です。こちらで解説していますので、記事を読む前に準備をしておいてください。また検索対象のデータベースをNotionに準備します。事前にデータベースを準備したので、こちらを検索していきます。このテーブルはテンプレートとして配布していますので、右上の複製ボタンを押してご利用ください。

Notionのデータベースを検索する

Notion APIで検索をするにはShortcutsに用意されているアクションURLの内容を取得を使います。Notionのページを検索するためのアクションを書いたサンプルがこちらです。

各部の説明

  • …APIのエンドポイントと方法です。Notionに対してどんな方法で操作を行うのかを指定します。ページを検索する時、方法はPOSTを指定してください。
  • …リクエストヘッダです。Notion APIにアクセスするための詳細情報を記載します。どの方法を使う場合もすべて同じことを書きます。
  • …リクエストボディです。方法でGETを選んだ場合は表示されません。具体的にNotionから検索する条件を記載します。ここに書いてある情報でフィルタリングします。

APIのエンドポイントと方法

URLと方法の組み合わせでNotionにどんなことをしたいのかを表します。ページを検索する時の方法はPOSTを選択してください。URLにはデータベースIDが入ります。

https://api.notion.com/v1/databases/データベースID/query

エンドポイントと方法についての詳しい説明はこちらの記事を参照してください。

リクエストヘッダ

Notion APIを使うとき、リクエストヘッダはすべて共通のものを使用します。書き方についての詳しい説明はこちらの記事を参照してください。

リクエストボディ

Notionに送信するフィルタの情報です。Notionのデータベースビューを見る時にフィルタを使うと、みたいデータを絞ることができますよね。APIで検索する時にもフィルタを指定してあげると、取りたいデータを取ることができます。フィルタ情報は辞書形式で書きます。

キー
filter検索条件

フィルタは種類ごとに決められた書き方をします。filterの下に検索するプロパティ名と検索方法を記入します。条件は複数つけることもできますが、今回は一つだけの条件で作っています。次にfilterの中身を見ていきます。

property

プロパティの名前を書きます。今回はタイトルを表すプロパティ名 Name としています。

rich_text

propertyに書いたプロパティの形式を書きます。今回はタイトルを検索したくて、タイトルの形式はrich_textなのでrich_textと書いています。

rich_textの種類は辞書を選んでください。辞書の下のキーには検索方法を書きます。値には検索に使う言葉を書きます。rich_textに使える検索方法は以下の種類を使えます。

指定する文字列検索方法
contains含む
does_not_contain含まない
equals完全一致
does_not_equal不一致
starts_with前方一致
ends_with後方一致
is_empty空である
is_not_empty空でない

ここまで指定してショートカットを実行すると、検索結果を取得できます。検索結果にはすべてのプロパティが含まれてしまい、膨大な量になってしまうので一部省略しています。ご了承ください。

{
    "object": "list",
    "results": [
        {
            "id": "b817da8f-3ac6-4cee-b767-19472665c0a7",
            "url": "<https://www.notion.so/b817da8f3ac64ceeb76719472665c0a7>",
            "properties": {
                "Name": {
                    "title": [
                        {
                            "plain_text": "独学大全",
                            "text": {
                                "content": "独学大全",
                            }
                        }
                    ]
                }
            }
        },
        {
            "id": "afc9fd2d-dcb0-4f03-a8c6-abd8f4c6c568",
            "url": "<https://www.notion.so/afc9fd2ddcb04f03a8c6abd8f4c6c568>",
            "properties": {
                "Name": {
                    "title": [
                        {
                            "plain_text": "タイトル",
                            "text": {
                                "content": "タイトル",
                            }
                        }
                    ]
                }
            }
        }
    ],
    "type": "page_or_database",
    "has_more": false
}

検索結果は辞書形式になっています。ここから値を取り出してリストを作ります。

検索結果からリストを作る

辞書の構造は複雑です。検索結果は以下のようにインデントで階層構造になっています。大きいものから順番に取り出していきます。最終的にはリストから選択アクションを使って、次のようにページ名とNotionのURLが並んでいるものを作ります。

できあがったものを実行するとこのようなダイアログが表示されます

リストから選択にはタイトルとURLのセットが並んだ辞書を作って渡します。検索結果を使って辞書を作っていきます。

① 辞書

検索結果をよく見ると、Notionに用意したテーブルの中にある本の名前が見えます。URLの内容を取得の結果は辞書形式になっています。辞書形式とは、辞書の索引と説明文のような構造になっています。辞書における索引のことをキー、説明文のことを値と呼びます。辞書の値を取得というアクションを使ってキーを指定すれば、値を取り出すことができます。

登録されているデータはresultsというキーの下にあります。、resultsというキーを使って辞書の値を取得します。辞書から値を取り出すときには、次のようにキー名を指定します。

値はそのままで大丈夫

こうすることで、resultsの値が取得できます。

②リスト

resultsの値はリスト形式になっています。リスト形式とは、辞書とは違ってキーがなく、値が並べられているだけです。値を取り出すときは何番目の値を取り出すかを指定しますが、今回はこのリストを選べるように検索結果を加工します。ここでは最初に空の辞書を用意しておき、リストの中身を繰り返して辞書に値を追加していくという手順で進めていきます。

まずは空の辞書を用意しまて変数を設定しておきます。変数名は検索したページリストとしています。

リストの中身を繰り返すには、各項目を繰り返すアクションを使います。繰り返す値には検索結果から取り出したresultsの値を指定します。今作ったからの辞書ではないので注意してください。項目をタップすると、変数を指定できるようになります。ここで、resultsの値を取得した”辞書の値”と書かれているアクションの結果を指定してください。

ここで考慮すべき重要な点があります。それは検索結果が0件だった場合です。0件のときはリストを作成する必要はなく、0件であることを伝えて処理を終了します。検索結果の数を判定するためにカウントif文 アクションを使用します。カウントを使用するとリストの数を数えることができます。数えた結果が0の場合、アラートを表示し、このショートカットを停止します。

これは繰り返しの前に挟んでください。次に繰り返しの中身を見ていきます。

③リストの中身

リストの中身を繰り返します。繰り返し項目リストの中身(②)の辞書を表しています。

辞書 でキー url を指定した値の “https” を “notion” に変更してから変数を設定しています。”notion” に変更しているのは、Notionをアプリで開きたいからです。”https” のままだとブラウザで開きます。また項目が多いと見ていて混乱してしまうので、必要な値は自分で名前をつけて変数を設定しておくのがおすすめです。

これにより、辞書の値を取得 でキーを url に設定すれば、notionページのURLを取得できるようになります。

次に、ページ名を取得します。ページ名の階層が深いため、値を取得するために何度も操作する必要があります。ややこしいですが、辞書の値を取得したり、リストから項目を取得したりすることを繰り返せば良いです。

こうして作った変数 urlName を使って、変数 検索したページリスト辞書の値を設定します。辞書はもう一度変数 検索したページリスト変数を設定することで変数を上書きする必要があります。

ここまで作ったものを 各項目を繰り返すの中に入れれば完成です。

繰り返しが終わった時、変数 検索したページリストは Name をキー、url を値にもつ 辞書 になっています。この辞書リストから選択 に渡します。選択した結果は値すなわち url になるので、URLを開く を使えば ショートカットの完成です。

作ったショートカットを実行すると、データベースを検索して選択したページを開けます。

今回作成したサンプルはこちらからダウンロードできます。Notionのテンプレートはこちらから複製できます。初回実行時のみインテグレーションのシークレットとデータベースIDを聞かれます。あらかじめ準備してからお試しください。またこのShortcutではAPIを使用しており、初回のみ許可を求められます。

おわりに

いかがでしたでしょうか。Shortcutsを使ってデータベースを検索する方法について解説しました。

今回は取得したページを開いていますが、アイデア次第で応用ができます。例えばNotionに登録したタスクの中から今日実行するタスクを検索して一覧として表示する、といったショートカットを作って朝一番に実行すれば、今日やることをスムーズに確認できます。

今回の内容は、NotionもShortcutsもiPhoneやMacを使っていればすべて無料で使うことができます。ハードルは少し高いですが、その分効果も高いのでぜひ試してみてください!

コメント

タイトルとURLをコピーしました