LoginSignup
2
3

More than 3 years have passed since last update.

NotionのAPIの基本のキ(公式Getting Startedのゆる翻訳)

Last updated at Posted at 2021-05-26

https://developers.notion.com/docs/getting-started

こちらの記事をざっくり日本語訳したものになります。

前提

  • 対象のワークスペースのAdminであること
  • curlコマンド使えること
    • って書いてあるけど別にPostmanとか、HTTPリクエストが投げれれば良いはず

手順

Integrationを作成する

こちら から新しいIntegrationを作成します。

スクリーンショット 2021-05-26 22.03.20.png

名前、画像、対象のワークスペースを入力し、次へ。

次の画面でInternal Integration Token というTokenが取得できるので、控えておきます。

スクリーンショット 2021-05-26 22.13.12.png

Integrationと対象のページ、データベースを共有する

Integrationはユーザとの記事共有のような形式になります。Integrationは最初はどのページ、データベースにもアクセス権は有りません。APIを使うためには、Integrationと特定の記事やデータベースを共有する必要があります。

ユーザを招待するように、APIからアクセスしたいページ、データベースをIntegrationと共有します。
(今回はわかりやすいのでDatabaseで行います)

スクリーンショット 2021-05-26 22.17.47.png

この時点で、Integrationは対象のデータベースに対して、read, write, edit権限を持ちます。この手順はどのユーザも作業可能です。

データベース、ページのIDを取得

次に、データベースのIDが必要になります。

  • アプリの場合
    • Share→Copy linkからURLを取得し、そのURLの最後のセグメントがIDをになります
  • Webの場合
    • 対象のデータベースをフルページで開いて、URLの最後のセグメントがIDになります。
https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=...
                                  |--------- Database ID --------|

データベースにアイテムを追加する

Notionにおいて、データベースの中のItemはページです。なので、create a page のエンドポイントを利用し、対象のデータベース配下にページを作成します。

以下のようなPOSTリクエストを送信します。(もちろんcurl以外でもなんでもOKです)

curl -X POST https://api.notion.com/v1/pages \
  -H "Authorization: Bearer {MY_NOTION_TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "parent": { "database_id": "{DATABASE_ID}" },
    "properties": {
      "Name": {
        "title": [
          {
            "text": {
              "content": "Yurts in Big Sur, California"
            }
          }
        ]
      }
    }
  }'

成功すると、200で以下のようなレスポンスが返ってきます。

{
    "object": "page",
    "id": "31840a55-35d2-4320-91e9-*********",
    "created_time": "2021-05-26T13:35:16.271Z",
    "last_edited_time": "2021-05-26T13:35:16.271Z",
    "parent": {
        "type": "database_id",
        "database_id": "4a212d83-bfb3-4f2f-8dd1-e**********"
    },
    "archived": false,
    "properties": {
        "Name": {
            "id": "title",
            "type": "title",
            "title": [
                {
                    "type": "text",
                    "text": {
                        "content": "Yurts in Big Sur, California",
                        "link": null
                    },
                    "annotations": {
                        "bold": false,
                        "italic": false,
                        "strikethrough": false,
                        "underline": false,
                        "code": false,
                        "color": "default"
                    },
                    "plain_text": "Yurts in Big Sur, California",
                    "href": null
                }
            ]
        }
    }
}

ちゃんとデータが作成されていました。

スクリーンショット 2021-05-26 22.36.17.png

まとめ

NotionのAPIの基本はこんな感じかと思います。

  • 作成するユーザはAdmin権限が要る
  • Integrationを作成、Tokenを取得
  • 対象のデータベース、ページにIntegrationを追加する
  • 対象のデータベース、ページのIDを取得
  • 実現したい動作に合ったエンドポイントにリクエストを投げる

待ちにまったNotion APIのリリースですね!

データの収集はもちろん捗りそうですが、色々な使い方がありそうです。どんどん活用していきましょう。

2
3
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
2
3