| Invalid Date
字数 0阅读时长 1 分钟
開示?
開示?
原題
Releasing Notion-Version 2022-06-28
日付
Jul 8, 2022
Number
57
前のリリース日(最新)
リリース間隔(日)
0
作成日
Jul 8, 2022 05:50 AM
タグ
IMPROVED
経過日数
13
Notion-Version 2022-06-28 がリリースされました。今回は、後方互換性のないリリースになります。特にクエリなどで取得したページコンテンツをそのまま利用している場合には、スクリプトに修正が必要となりますのでご注意ください。以下、概要説明すると同時にバージョンの違いを検証します。

概要説明

今日、我々は以下の後方互換性のない変更を加えた Notion-Version 2022-06-28 をリリースします。
  • ページプロパティは、ページプロパティエンドポイントを使用して取得する必要があります。
  • 親が常に直接の親になりました。ブロックに parent field が追加されました(訳注: ブロックも親になれるようになりました)。
  • データベースのリレーションが single_propertydual_propertyの型を持てるようになりました。
それぞれの変更点については、以下をご覧ください。

ページプロパティは、ページプロパティエンドポイントを使用して取得する必要があります

以前、データベースクエリエンドポイントや検索エンドポイントから取得される ページオブジェクト は、ページの全てのプロパティをその値とともに含むプロパティフィールドを返していました。
これは便利な反面、全てのプロパティに対して正確な結果を返すため、大規模なデータベースやメンションの多いページではパフォーマンスが低下し、タイムアウトが発生していました。このパフォーマンスに対する対策として、3月1日にページオブジェクトが他のオブジェクトに対して 25 件以上メンションしているページについては、正確な結果を返さなくなるという免責事項を追加しました(これらは title, rich_text, relation, people, rollup, そして formulaに影響します)。
2021年10月に我々は、retrieve a page property item endpoint を介して、より正確な個々のページプロパティを取得する方法を導入しました。このエンドポイントを使用すると、追加のルックアップを伴う複雑なプロパティを処理することができます。
Notion-Version 2022-06-28ではページオブジェクトから プロパティ 値が削除されました。したがって、今後全てのプロパティ値は、ページのプロパティ項目を取得するエンドポイントを通じて行わなければなりません。
ページプロパティを項目を取得するエンドポイントの使用例として、 SDK examples がページプロパティ項目を取得するエンドポイントを用いる方法に更新されています。
ページプロパティが複雑な理由については、ブログ記事である “Creating the Notion API” を参照してください。

親が常に直接の親になりました。ブロックに parent field が追加されました

これまで、データベースやページの親にアクセスする場合、親は常にページ、データベース、またはワークスペースのいずれかでした。これは、Notion の実際のデータモデルに忠実ではなく、親が他のブロックになることもありました。例えば、トグルブロックの下にページをネストすることもできました。
ページとデータベースの親フィールドが変更され、常にそのページやデータベースの直接の親となるようになり、新しい親タイプとして block_id が追加されました。
さらに、ブロックオブジェクトに parent フィールドが追加されました。これらの変更により、Notion のツリーを完全に横断できるようになりました。
ページ、データベース、ワークスペースを取得するというこれまでの振る舞いをエミュレートするためには、ブロック取得のエンドポイントを用いて、ツリーを横断することができます。すなわち、親がそれらのタイプになるまで親を繰り返し取得していけばよいです。
親タイプについて詳しく知りたい場合は ここを読んでください。

データベースのリレーションが single_propertydual_propertyの型を持てるようになりました。

データベースオブジェクトのリレーションプロパティに single_propertydual_propertyという二つの型が追加されました。これらを使用して、データベース間の一方向リレーションと双方向リレーションを作成することができます。

New version of the JavaScript SDK

これからの変更に合わせて、Notion JavaScript SDK.の新しいメジャーバージョン (v2.0.0) をリリースしました。この新しいバージョンにアップデートするには、リポジトリ内から npm install @notionhq/client@latest または yarn upgrade --latest @notionhq/client を実行してください。

検証

今回の変更はかなり大きいので、NotionRubyMapping もメジャーアップデートする必要があります。とりあえず、現在のリリース版である 0.5.5 と、NOTION_VERSION だけ上げた 0.6.0 開発版とで結果を比較してみようと思います。左が 2022-02-22 (前回のリリース) で、右が 2022-06-28(今回のリリース)になっています。

バージョン確認

ひとまず読み込んでバージョンを確認します。

ページの取得

このページを取得してみます。2022-02-22 では値が入っていますが、2022-06-28 では確かに値が入っていません。Property の値を持ってくるためには、個々に API を呼び出さないといけないのですね。NotionRubyMapping では値の取得はメソッドにしているので、その部分でフックする形になりそうです。少し大きな修正になりそうです。逆にユーザスクリプトには影響させずにすみそうです。

トグルブロック内のページの取得

テストトグル
↑ににトグル内にページを作成してみました。このページの親を確認します。2022-02-22 では遡ってこのページの id が page_id として入っています。一方で、2022-06-28 では block_id が取得されています。その後、Block を取得してみると、ちゃんと ToggleBlock が親になっていることがわかります。

ブロックの親の取得

さらにブロックの親を取得してみます。ここでは、一つ上の右側のコードブロックを取得してみます。確かに parent に block_id が出てくるようになりました。ただ、これは 2022-02-22 のバージョンでも出てきているので、バックポートされているようです。
 

データベースのリレーション

DB1
DB2
↑このように One-way と Two-way のリレーションを持ったデータベースを作成しました。2022-02-22 では双方向のリレーションのみ表示されています。2022-06-28 では一方向のリレーションも表示されており、typesingle_property が設定されています。双方向の方には、dual_property が設定されています。
検証は以上です。これから、これまでテストで使っていた 2022-02-22 のレスポンスを 2022-06-28 のものに差し替えるので、テストがほぼ全滅するはずです。これからテストが通るように v0.6.0 の実装を書き換える処理に入ります。リリースは少しお待ちください。
 
Loading...
目录