【Notion API】最短で取得するNotionデータベース

post-hero-image

前回、「【Notion】データベースが便利すぎて完全に沼。」の記事でNotionデータベースについて熱くプレゼンしました。

今回はあらかじめNotionに定義しておいたデータベースの値を、Notion API経由で最短、最小構成を目指して取得していきます。(最短とは言ってない。)


使用するものは二つ。

  • Notion
  • cURLコマンドを実行できるアプリケーション(POSTMAN、コマンドプロンプト、PowerShell、ターミナル、シェル、コンソール…)


Notionアカウントの作成は、Notion アプリもしくはhttps://www.notion.so/からどうぞ。

データベースIDの取得

まずは自分のアカウントにログインして、データベースを作成しておきます。
例えばこんな感じで。


ビューのオプション(三点リーダ)から「ビューのリンクをコピー」してどこかに保管しておいてください。

このリンクはhttps://www.notion.so/hogehogehoge?v=hugahugahugaという形式になります。
"?v="より前のhogehogehogeをビューのIDとして使用します。


必ずデータベースに対して管理者権限のあるアカウントでログインしてください。
個人のアカウントで普通にデータベースを新規作成すれば、とくに問題は起こらないと思います。

インテグレーションの作成

Notionには「インテグレーション」というものがあります。

お気に入りのツールをNotionにつなげる


公式ページでは説明されており、Github、Slack、Dropboxなどのインテグレーションが公式から提供されています。
VSCodeやChromeブラウザの拡張機能、npmのパッケージのようなものでしょうか?

そんなインテグレーションですが、Notion APIを使用するには、自分専用のインテグレーションを作成する必要があります。

ブラウザからポチポチと設定していくだけですので、作り方は非常に簡単です。

Notionにログインして、インテグレーション管理ページにアクセスします。
https://www.notion.so/my-integrations

「新しいインテグレーションを作成する」を押して、新規インテグレーション作成画面に進んでください。

基本情報を入力する画面が表示されますので、名前を入力します。



「関連ワークスペース」は紐づけたいデータベースのあるワークスペースを選択してください。
「コンテンツの権限」は「コンテンツを読み取る」に必ずチェックを付けておいてください。他の項目はなんでもいいです。

すべて設定したら、「送信」を押してください。

シークレットトークンが発行されます。
こいつはBearer tokenに設定する値です。「secret_」も含めて文字列をコピーしておいてください。

APIを叩く

コマンドプロンプト等で、以下のコマンドを実行してください。

curl --location --request GET 'https://api.notion.com/v1/databases/(ビューのID)' \
--header 'Notion-Version: 2021-08-16' \
--header 'Authorization: Bearer (シークレットトークン)'


こんなレスポンスが返ってきたら成功です。データベースの値がJSON形式で取得できました。

{
    "object": "database",
    "id": "xxxxx",
    "cover": null,
    "icon": null,
    "created_time": "2022-09-02TxxxxxZ",
    "created_by": {
        "object": "user",
        "id": "xxxxx"
    },
    "last_edited_by": {
        "object": "user",
        "id": "xxxxx"
    },
    "last_edited_time": "2022-09-03TxxxxxZ",
    "title": [
        {
            "type": "text",
            "text": {
                "content": "しろたんとおともだち",
                "link": null
            },
            "annotations": {
                "bold": false,
                "italic": false,
                "strikethrough": false,
                "underline": false,
                "code": false,
                "color": "default"
            },
            "plain_text": "しろたんとおともだち",
            "href": null
        }
    ],
    "description": [],
    "is_inline": true,
    "properties": {
        "どうぶつ": {
            "id": "xxxxx",
            "name": "どうぶつ",
            "type": "select",
            "select": {
                "options": [
                    {
                        "id": "xxxxx",
                        "name": "あざらし",
                        "color": "default"
                    },
                    {
                        "id": "xxxxx",
                        "name": "らっこいぬ",
                        "color": "yellow"
                    },
                    {
                        "id": "xxxxx",
                        "name": "アコヤ貝",
                        "color": "blue"
                    },
                    {
                        "id": "xxxxx",
                        "name": "ペンギン",
                        "color": "gray"
                    }
                ]
            }
        },
        "なまえ": {
            "id": "title",
            "name": "なまえ",
            "type": "title",
            "title": {}
        }
    },
    "parent": {
        "type": "page_id",
        "page_id": "xxxxx"
    },
    "url": "https://www.notion.so/xxxxx",
    "archived": false
}


あとは煮るなり焼くなり好きにしてください。

* * *

公式は「入門」と書きつつ、初心者向けの記事としては少しハードルが高く感じました。(POST送ってデータベース作成しちゃう。)

個人的には『Notion』という便利なアプリケーション上で、データベースの作成・更新・削除を行い、API経由で取得できればそれで十分だと思います。

Notionデータベースだと嬉しい場面って、わざわざRDBやMongo DBを建てるまでもない、実験的な作業だと思うので。




収集しまくったデータをNotionに貼り付けて、さくっと卒論執筆したいなぁ…

単位が足りてるのかって?






お前それサバンナでも同じ事言えんの?
  ノ从从从从ヽ
 (⌒/゙゙゙゙゙゙\⌒)
 ノイ _  _|ヽ
 彡|ヽ・〉〈・ノ|ミ
 彡|  ▼  |ミ
 彡ヽ _人_ / ミ
`/ヾヽ `⌒′/ ツ\
| ヾ ゙゙゙゙゙゙ ツ |
| | ヾ从从ツ | |
| `――――――⌒)
(\________)
(⌒       ノ
  ̄| ̄ ̄ ̄ ̄ ̄T