はじめに
2021年5月にNotionのAPIがパブリックベータ版としてリリースされました。
お待たせしました。
— Notion Japan 🇯🇵 (@NotionJP) May 13, 2021
遂に、NotionのAPIがパブリックベータになりました 🎉
これはソフトウェアを自分のワークフローに合わせカスタマイズするための、新しい取り組みへの一歩です
皆さんと一緒に何を作り上げていくか、今から楽しみです
日本語の説明はこちらからhttps://t.co/KMWab0BXpR
パブリックベータ版では、Notionのデータベースやページ, ブロックへの接続に関するAPIが提供されています。
今回はデータベースへの接続や操作方法に関して紹介します。
インテグレーションの作成
まずは以下のページから画面の説明に沿ってインテグレーションを作成し、「内部インテグレーション」のトークンを発行します。
※トークンは外部に公開しないようにご注意ください。
※先日Notionが日本語版を公開したため、英語での設定が不安な方は言語設定の変更をおすすめします。
データベースへの接続
今回はデータベースを操作したいため、まずは先ほど作成したインテグレーションとデータベースを接続(共有)します。
操作したいデータベースを表示し、画面右上の共有(Share)>招待(invite)から、先ほど作成したインテグレーションを追加します。
※今回はフルページのデータベースを作成しました。
先ほど「TEST API」という名前でインテグレーションを作成したので、対象のインテグレーションを編集権限で招待します。
データベースの操作
前準備
データベースの操作にはデータベースのIDとトークンが必要です。
トークン
トークンに関しては「インテグレーションの作成」で発行したトークンを使用します。
インテグレーションの管理ページはこちらです。
データベースID
データベースIDはURLから取得できるため、アプリを使用している場合は画面右上の「Share」>「Copy link」から、ブラウザからアクセスしている場合はURLをコピーし、www.notion.so/
と ?v=
の間の32文字を取得します。この32文字がデータベースIDです。
※ワークスペース名がある場合は www.notion.so/myworkspace/
直後の文字列を取得します。
https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=...
|--------- Database ID --------|
※ 引用元: https://developers.notion.com/docs/getting-started
データの追加
まずはデータベースにデータを追加してみます。
公式ガイドの Getting started を参考に、ターミナルでcurl
を実行します。
下記コマンドの$NOTION_KEY
にトークン、$NOTION_DATABASE_ID
にはデータベースIDを指定しましょう。
curl -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2021-08-16" \
--data "{
\"parent\": { \"database_id\": \"$NOTION_DATABASE_ID\" },
\"properties\": {
\"title\": {
\"title\": [
{
\"text\": {
\"content\": \"データ追加\"
}
}
]
}
}
}"
上記の通りデータが追加されました。
Tags(Multi-select)を指定してデータを追加
次にMulti-select
を指定してデータを追加します。
今回はMulti-select
に Notion
とAPI
を指定してみました。
curl -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2021-08-16" \
--data "{
\"parent\": { \"database_id\": \"$NOTION_DATABASE_ID\" },
\"properties\": {
\"Name\": {
\"title\": [
{
\"text\": {
\"content\": \"Tagsを設定して追加\"
}
}
]
},
\"Tags\": {
\"multi_select\": [
{
\"name\": \"Notion\"
},
{
\"name\": \"API\"
}
]
}
}
}"
Names
とTags
の両方を指定して追加することができました。
Multi-select
に存在しない選択肢を追加することも可能です。
データの更新
続いてデータの更新です。
「Tagsを設定して追加」という文字列を「データ修正」に変更してみます。
ページIDの取得
Notionのデータベースは「ページ」という概念の集合体なので、更新にあたって更新対象のページIDを取得する必要があります。
ページIDはAPI経由で取得する方法もありますが、今回はデータベースIDと同様にURLから取得することにします。
URLは更新対象のページを選択し、「Share」>「Copy link」から取得できます。
取得したページURLの末尾の文字列(https://www.notion.so/xxxxx
の xxxx
の部分)がページIDなので、以下のエンドポイントにページIDを指定してPATCHリクエストを行います。
※URLの取得方法によってはURLの構成が変わるためご注意ください
# エンドポイント
https://api.notion.com/v1/pages/$PAGE_ID
curl -X PATCH https://api.notion.com/v1/pages/$PAGE_ID \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2021-08-16" \
--data "{
\"parent\": { \"database_id\": \"$NOTION_DATABASE_ID\" },
\"properties\": {
\"Name\": {
\"title\": [
{
\"text\": {
\"content\": \"データ修正\"
}
}
]
}
}
}"
1列目の「Tagsを設定して追加」の文字列を「データ修正」へ変更することができました。
データの削除(アーカイブ)
最後にデータの削除を試します。
削除に関しては非常にシンプルで、先ほどの更新APIに対して archived
パラメータを追加し、true
を設定することでデータを削除(アーカイブ)することができます。
curl -X PATCH https://api.notion.com/v1/pages/$PAGE_ID \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2021-08-16" \
--data "{
\"parent\": { \"database_id\": \"$NOTION_DATABASE_ID\" },
\"archived\": true,
\"properties\": {
\"Name\": {
\"title\": [
{
\"text\": {
\"content\": \"データ修正\"
}
}
]
}
}
}"
「データ修正」のレコードが削除されました。
\"archived\": false
を指定することでデータを復元することも可能です。
まとめ
今回はNotino APIを用いたデータベースの操作として、データ(ページ)の追加, 更新, 削除方法について紹介しました。
Notionでは他にも様々なAPIが公開されているので、気になる方は以下の参考リンクをチェックしてみてください。
参考リンク
明日は、@masaseat さんによる「非エンジニアのProduct Managerが社内のBig Dataを広告運用業務に生かしてみた」です。
引き続き、GMOアドマーケティング Advent Calendar 2021 をお楽しみください!