【Notion API】最短で取得するNotionデータベース【RTA】
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学会でまたお会いしましょう!!!
- この記事を共有する
Webアプリケーションのプログラマ(フロントエンドエンジニア) Angular(TypeScript) / Next.js / Cypress を主に使用。
前職はピアノ技術者(調律師)。2017年からブログ「trog」を運営。
あざらしと音楽が好き。
trogではプッシュ通知機能を提供しています。
新しい記事が投稿されたタイミングで、お使いの端末にお知らせが届きます。
よければ通知設定ページから通知の許可をお願いします。