notion APIを触ってみました。

こんにちは、開発チームの塩濱です!

今回は題名の通り、先日公開されたnotionAPIを触ってみた備考録になります。

公式記事を見てみる

notionAPI公式: developers.notion.com

以下のようなapiが公開されていました。

f:id:hacomono-tech:20210524191712p:plain

notionAPIを使用するには、tokenを発行する必要があるようなので 公式からtoken作成ページへと遷移します。

tokenを発行してみる

発行自体はポチポチとするだけなので、ものすごく簡単にできました。 こんな感じの画面が出てきたら成功です。

f:id:hacomono-tech:20210524191848p:plain

ちなみに管理者のみ触れるようにするか、 ユーザーみんな触れるようにするか決められる項目もありました。 (今回は管理者のみを選択してます。デフォも管理者のみになっています。)

f:id:hacomono-tech:20210524191943p:plain

notionに簡易的なDBを作成してみる

連携テストするために、notionに簡易的なDBを作成してみます。

f:id:hacomono-tech:20210524192236p:plain

このDBに対して最終的にcurlapiを実行するわけですが、 なかなかうまく連携できず、地味詰まったのでその点もこちらに明記しておきます。

何度apiを叩いても、そんなtokenありませんけど?というエラーが返ってきていたので 再度公式を読みに帰ると、以下が記載されてました。(公式ちゃんと読むの大切)

Share a database with your integration Integrations built with the API follow a similar permission system to the sharing permissions for users. There's an important difference: integrations don't have access to any pages (or databases) in the workspace at first. A user must share specific pages with an integration in order for those pages to be accessed using the API. This helps keep you and your team's information in Notion secure.

画像の右端の箇所にshareボタンがあるのですが、 そちらをクリックすると、今回作成したtokenが出てきますのでそちらを選択してinviteしてあげる必要がありました。

早速apiを実行してDBに項目を追加してみる

apiを使用してDBに項目を追加してみます。 今回はCreate a page APIcurlで実行します。

"xxxxxTOKENxxxxx"には先ほど作成したtokenをセットし、 database_idは作成したnotionのDBのURLに含まれている英数字を貼り付けてあげます。

curl -X POST https://api.notion.com/v1/pages \
  -H "Authorization: Bearer xxxxxTOKENxxxxx" \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "parent": { "database_id": "xxxxxxxxxxx" },
    "properties": {
      "Name": {
        "title": [
          {
            "text": {
              "content": "テスト投稿してみる"
            }
          }
        ]
      }
    }
  }'

f:id:hacomono-tech:20210524192706p:plain

・・入ってきました!

続きまして、コメントも追加してみます。

curl -X POST https://api.notion.com/v1/pages \
  -H "Authorization: Bearer xxxxxTOKENxxxxx" \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2021-05-13" \
  --data '{
    "parent": { "database_id": "xxxxxxxxxxx" },
    "properties": {
      "Name": {
        "title": [
          {
            "text": {
              "content": "テスト投稿してみる"
            }
          }
        ]
      },
      "コメント": {
       "rich_text": [
        {
     "text": {
     "content": "テスト投稿できましたね"
     }
    }
       ]
      }
    }
  }'

f:id:hacomono-tech:20210524192814p:plain

ちゃんとコメントも入りました。

気になっていたzapierもこの機会に合わせて触ってみる

notionAPIを触ってみました、については以上になるのですが 以前から気になっていたzapierというタスク自動化ツール(?)についても notionAPIが増えているみたいなので合わせて触ってみます。

notionAPIがトリガーとしても選択できるようになっています。

f:id:hacomono-tech:20210524193054p:plain

今回はテストなので、スプレッドシートに先ほど作成したDBの内容が 転記できるのか試してみようと思います。

notionをトリガーにして、スプレッドシートにアクション(書き込む)を設定します。 ポチポチ選択していくだけで出来るのでとても簡単でした。

f:id:hacomono-tech:20210524193126p:plain

実際にテストしてみます。

f:id:hacomono-tech:20210524193157p:plain

無事、転記できました!

f:id:hacomono-tech:20210524193237p:plain

最後に

notionAPIを使用してどんなことが実現可能になるのか、 zapierとかもそうですが、何かまた組み合わせることで便利になることが増えそうなので 色々試してみたいなと思います!