39
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GMOアドマーケティングAdvent Calendar 2021

Day 18

Notion APIでデータベースを操作する

Last updated at Posted at 2021-12-17

はじめに

2021年5月にNotionのAPIがパブリックベータ版としてリリースされました。

パブリックベータ版では、Notionのデータベースやページ, ブロックへの接続に関するAPIが提供されています。
今回はデータベースへの接続や操作方法に関して紹介します。

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

まずは以下のページから画面の説明に沿ってインテグレーションを作成し、「内部インテグレーション」のトークンを発行します。

※トークンは外部に公開しないようにご注意ください。
※先日Notionが日本語版を公開したため、英語での設定が不安な方は言語設定の変更をおすすめします。

データベースへの接続

今回はデータベースを操作したいため、まずは先ほど作成したインテグレーションとデータベースを接続(共有)します。
操作したいデータベースを表示し、画面右上の共有(Share)>招待(invite)から、先ほど作成したインテグレーションを追加します。
※今回はフルページのデータベースを作成しました。
001.png

先ほど「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\": \"データ追加\"
            }
          }
        ]
      }
    }
  }"

002.png

上記の通りデータが追加されました。

Tags(Multi-select)を指定してデータを追加

次にMulti-selectを指定してデータを追加します。
今回はMulti-selectNotionAPIを指定してみました。

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\"
            }
          ]
        }
    }
  }"

003.png

NamesTagsの両方を指定して追加することができました。
Multi-selectに存在しない選択肢を追加することも可能です。

データの更新

続いてデータの更新です。
「Tagsを設定して追加」という文字列を「データ修正」に変更してみます。

ページIDの取得
Notionのデータベースは「ページ」という概念の集合体なので、更新にあたって更新対象のページIDを取得する必要があります。
ページIDはAPI経由で取得する方法もありますが、今回はデータベースIDと同様にURLから取得することにします。
URLは更新対象のページを選択し、「Share」>「Copy link」から取得できます。

004.png

取得したページURLの末尾の文字列(https://www.notion.so/xxxxxxxxxの部分)がページ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\": \"データ修正\"
            }
          }
        ]
      }
    }
  }"

005.png

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\": \"データ修正\"
            }
          }
        ]
      }
    }
  }"

006.png

「データ修正」のレコードが削除されました。
\"archived\": false を指定することでデータを復元することも可能です。

まとめ

今回はNotino APIを用いたデータベースの操作として、データ(ページ)の追加, 更新, 削除方法について紹介しました。
Notionでは他にも様々なAPIが公開されているので、気になる方は以下の参考リンクをチェックしてみてください。

参考リンク


明日は、@masaseat さんによる「非エンジニアのProduct Managerが社内のBig Dataを広告運用業務に生かしてみた」です。
引き続き、GMOアドマーケティング Advent Calendar 2021 をお楽しみください!

39
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?