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

テクノロジー
2022/09/05
post-hero-image

Notion APIを使用した『Notion DB(バグなし)Any% RTA』、始めていきます。

RTAとは、リアルタイムアタック(Real Time Attack)の略です。
ゲームスタートからクリアまでの実時間(時計で計測した現実の所要時間)の短さを競います。
(引用元: https://dic.nicovideo.jp/a/rta)



手順をご紹介していきましょう。

準備

使用するものは二つ。

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


(2023/2/28 追記)Linux or Mac OSでの実行がおすすめです。Windowsの場合は注意点が多いので、POSTMANの使用をおすすめします。 WSLでもOKです。慣れている方はお好みの環境でどうぞ。

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を叩く

ターミナルなどで以下のコマンドを実行してください。
Notion-Versionの値は最新のバージョンを指定してください。
(参照: Changes by version - Notion 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
}



無事にデータを取得できました。
ここでタイマーストップです⏱

記録は21分13秒でした。慣れればもっとタイムが縮まりそうです。
レギュレーションにも改善の余地があるかもしれません(?)

完走した感想

公式は「入門」と書いていますが、初心者向けの記事としては少しハードルが高く感じました。ExcelやスプレッドシートからNotion DBにたどり着く方、結構いるのでは...?

Notionデータベースだと嬉しい場面って、わざわざRDBやMongo DBを建てるまでもない、実験的な作業だと思うので。NotionのGUIからデータベースの作成・更新・削除を実施→API経由で取得できるので、非常に便利なサンドボックスだと思います。

GETやらPOSTなどのHTTPメソッドについて知りたい方はMozillaの記事もご参照ください。
HTTP リクエストメソッド - HTTP | MDN

* * *

お気に入りのゲームでRTAをやってみたい方は、以下のサイトがおすすめです。
RTAのガイド - RTAに取り掛かる前に

すでに、そのゲームの先駆者たちによる「学会」が設立されているかも知れません。ぜひ検索してみてください。



Notion推しのそこのあなた!同担大歓迎です!Notion DB学会でまたお会いしましょう!!!

    この記事を共有する

trogではプッシュ通知機能を提供しています。

新しい記事が投稿されたタイミングで、お使いの端末にお知らせが届きます。

よければ通知設定ページから通知の許可をお願いします。