2
0

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 3 years have passed since last update.

NotionAPIが使えるようになるまで

Posted at

概要

Notionのページを定期的に作成したり、更新したりするために使用する
NotionAPIの初期設定について紹介します

手順

トークンの発行

からAPIのトークン発行手続きを行います。

上記ページの「新しいインテグレーションを作成する」ボタンを押下

2021-11-14_21h47_52.png

基本情報の名前に任意の名前を入力し、「関連ワークスペース」が導入を行いたいスペースになっていることを確認して、送信ボタンを押下

2021-11-14_21h48_33.png

次の画面へ遷移すると、発行されたトークンを確認することができます。

このトークンが他人に漏れてしまうとAPIを利用してNotionに記述している内容を取得したり、
更新されてしまう可能性があるため流出しないように注意してください。

「インテグレーションの種類」は「内部インテグレーション」を選択したままでOKです。
(誰でも使えるAPIを作成する場合等に「パブリックインテグレーション」を選択するようです)

APIを使用したいページ(DB)にインテグレーションの招待

APIを使用したいページ(DB)に対して作成したインテグレーションの招待を行う必要があります。

2021-11-14_22h00_33.png

使用したいページやデータベースなどの画面の右上の「共有」ボタンを押下→「招待」ボタンを押下
→作成したインテグレーションを選択して「招待」ボタンを押下

動作確認

動作確認として /pages (POST)のメソッドを使用します。
このメソッドはDBまたはページを親としてその配下にページを作るメソッドです。

テスト用のDBとして以下のようなDBを作成します。
2021-11-14_23h23_43.png

curlで以下のリクエストを投げて、エラーが返ってこなければOK

secret_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX の部分は発行したトークン
"database_id": "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"の部分はDBのページを開くと
URLが https://www.notion.so/{userName}/{databaseID}?v={viewID}という形式になっているのでそこから取得します。

DBの子ページを作成

curl --location --request POST 'https://api.notion.com/v1/pages' \
--header 'Authorization: Bearer secret_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--header 'Notion-Version: 2021-08-16' \
--data '
{
    "parent": {
        "database_id": "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
    },
    "properties": {
        "Name": {
            "title": [
                {
                    "type": "text",
                    "text": {
                        "content": "APIでページ作成テスト"
                    }
                }
            ]
        }
    }
}'

properties.Name は上図の例の列名がNameとしているためproperties.Nameという名前にしています
名前としている場合はproperties.名前とします。

...
    "properties": {
        "名前": {
            "title": [
                {
...

トラブルシューティング

エラーメッセージ:

{"object":"error","status":404,"code":"object_not_found","message":"Could not find database with ID: XXXXXXXXXXXXXXXXXXXX."}

→ ページ(DB)に対してインテグレーションが追加されていることを確認してください。

他メモ等

リクエスト上限について

Rate-limited requests will return a "rate_limited" error code (HTTP response status 429). The rate limit for incoming requests is an average of 3 requests per second. Some bursts beyond the average rate are allowed.

からリクエストの頻度の上限として、平均3回/秒(おそらく瞬間的に1秒以内に3回以上リクエストが行われる分には制限がかからず、定常的に1秒間に3回以上のリクエストが行われると制限される)の制限があり、それを超えるとレスポンスとして429が返ってくる模様

回避するにはループ的にAPIを呼び出すようなことをするのであれば少しスリープを入れる等の対応が必要になりそう

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?