アルパカログ

📅  2021-06-21

Notion Blogで公式APIを使って本文を取得する


アナウンスがあったとおり、ついに非公式APIによるNotionコンテンツの取得ができなくなりました。

以前このブログでは「Notionブログで記事の一覧取得を公式APIに切り替える」方法を説明しましたが、このエントリはブログ記事の本文の取得を公式APIに切り替える方法を説明します。

公式APIクライアントを使って本文を取得するメソッドを実装する

Notionでは全てのコンテンツがブロックという単位で表現されます。ですので、本文を取得するにはページ内のブロックを取得する必要があります。

そこで、 公式APIクライアント を使ってページIDを指定してページ内の全てのブロックを取得するメソッド getAllBlocksByPageId() を実装します。

手前味噌ですが、下記を参考に実装してみてください。

これでページ内のブロックを取得できるようになりました。

注意点として、2021年6月20日現在、対応しているブロックの種類はテキストライクなものだけです。画像などはまだ取得できない ( type: unsupported となってしまう) ため注意してください。

記事詳細ページを実装したメソッドを使って置き換える

記事詳細ページ src/pages/blog/[slug].tsx を実装したメソッドを使って置き換えていきます。

注意点としては、もともとの実装では単なるオブジェクト(ハッシュ)を返していたのが、今回実装したメソッドによって Block 構造体を返すようになっていることです。

それに伴って、HTMLをレンダリングするメソッドにも手を加える必要があります。

また手前味噌ですが、下記のPRを参考に実装してみてください。

textBlock() メソッドで Block 構造体を受け取るように変更しているのがおわかりいただけると思います。

これで本文の取得を公式APIを使って行うことができました。

とはいえ、まだ画像ブロックなど対応していないブロック種別が多いです。

将来、公式APIがそれらをサポートしたらこのブログでも対応方法を紹介したいと思います。