ついにきたNotionAPI(パブリックベータ)を触ってみる
私が愛用している、なんでもできるWebサービス「Notion」にAPIがつきました。
以前から非公式APIは存在しましたが、非公式ゆえトークンが時々変わるなど、安定して使える代物ではありませんでした。
この度、ついにパブリックベータ版が開放されたため、早速使ってみようではないかという記事です。
Notion公式Docを見ながら進めます。
Before we begin
- Notionに管理者ユーザーとしてログインすること
- ワークスペースメンバーじゃなくてオーナーで入れ、ということ。
- curlを準備すること
- と言われたけれど、GUIのほうが私には嬉しいのでPostmanを使う。
Create a new integration
My integrationsという管理ページを開く。
New integration を開いてみる。
名前と、ロゴと、紐付けワークスペースを選択する。
とりあえずIntegration Testとしてみた。
もうできた。
WordPressの初回インストールより早い。
Share a database with your integration
ここに、NotionBlog(でぶ手帳)用のデータベースがあります。
(このNotionBlog、非公式APIを使って構築したので、紐付けが切れて記事無しになってる…)
右上のShareを押すと、インテグレーションも共有先として選べるようになっていました。
入力欄をクリックすると、ポップアウトが出てくる。
言われるがままにインテグレーションを追加。
右側の権限設定を見た感じ、Can edit(編集権限)以外も選べそうに見えるけど、未実装なのか何なのか、特に選択肢は無い。
セキュアの観点ではCan View(閲覧権限のみ)も欲しいところ。
次に進む前に、データベースIDを控えておけ、との指示。
私のページの場合、でぶ手帳テーブルはインラインテーブルなので、
右上の … をクリックして、
Copy linkをクリックしてリンクURLをコピー。
リンクURLの、ワークスペース名と?v=までの間の英数字羅列がデータベースID。
私の場合はbbe~0b5。
(以降チュートリアル逸脱)GETしてみる
チュートリアルはアイテム追加しちゃってるけど、とりあえずGETすれば満足なので、GETしてみる。
っていうか、APIドキュメントちゃんとあるやん!すごいやん!
言われたがままに設定してみました。
- URL(GETリクエスト)
https://api.notion.com/v1/databases/{データベースID}
- Headers
- Authorization
Bearer {シークレットトークン}
- インテグレーションを作ったときに表示されたシークレットトークンを使う
- 内部統合(Internal integration)の場合はこれでいけるらしいけど、パブリックにオープンするインテグレーションは、もっと込み入ったことをするらしい
- 詳しいドキュメントはここ
- Notion-Version
2021-05-13
- APIのバージョニングは、ここでやるらしい。
- 互換性のない変更が入った場合はバージョンの日付が変わる、とのこと。
- URLの中に
v1
が入っているけど、このv1は永久にv1らしい。 - 詳しいドキュメントはここ
- Authorization
すると、
とれました!わーい!
でもメタデータとプロパティ一覧(列一覧)しか取れてないような…
POSTってそういうことか
どうやらDBのアイテムを取るには、POSTで呼び出せるqueryというAPIを使うらしい。
DynamoDBのQueryAPIみたいなものですね。
というかすっかり忘れてたけど、NotionってAWSでしたよね…。
だからQueryなのか。
URLの末尾に/queryを足して、
メソッドをPOSTに変えただけです。
これで、えーい。
なんかとれました!
どうやらResults[]に入っているのは、1行ごとのデータの模様。
じゃあ記事の本文を見てみよう…Pageの中かな。
あれ、タイトルしか入ってない。中身は!?
ページの中身を取り出す
結論から言うと、ブロックの子要素を取るAPIを使う。
URLのblocks/と/childrenの間のIDは、先のAPIのResults[]各要素に入っていたID。
ブロックIDですね。
するとこんな感じで取れる。
ただNotionの特性上、全部がブロックとして取れるので、これをブログとして表示するのはカンタンじゃなさそう。
Notion Blogすごいな。
ちなみにページをGETするAPIもありますが、これはページの概要だけを取るだけです。
DatabaseのQueryで取れたResults[]の中身と一緒のものが取れます。
むすび
色々遊べそうな気がするけど、Notionそのものに癖があるので、全部1から組むのは難しそう。
Zapier統合も同時リリースされたので、パッと使うならこっちかも。
…IFTTT統合は、まだですか…
ディスカッション
コメント一覧
まだ、コメントがありません