NotionのDBのリレーション作成・更新を自動化するGitHub Actions
TL;DR
- notion-db-auto-relatorをNotion上における複数DB間の複雑なリレーションを自動かつ定期的に更新したい場合に導入してみてほしいです
notion-db-auto-relatorとは
NotionのDBにはRelationという機能(DBにあるページの相互参照可能な仕組み)が存在しますが、このリレーションを定期的に自動更新させたいと考え、今回 notion-db-auto-relator という仕組みを作成しました。
この仕組はローカルでも実行可能ですし、GitHub Actionsとしても公開していますので利用環境に応じて好きな方を使ってください。
github.com
リレーションの自動作成方法
notion-db-auto-relatorを使用したリレーションを行うためにNotion上で4ステップの準備が必要です。
準備の手順や詳細はレポジトリにあるドキュメントを参照して準備を行ってください。
DBの準備と設定
今回はNotionのRelationの説明ページに例として使われているCustomersとItemsのDBと似たスキーマのDBを用意し、今回CustomersをParentDB、ItmesをChildDBとみなしてこれらに対してのリレーションを自動作成・更新してみます。
ここでnotion-db-auto-relatorは共通のプロパティをリレーションキーとしてDB同士のリレーションを自動作成・更新するため共通のプロパティをそれぞれのDBに作成しておく必要があります。今回の場合でいうとリレーションキーにcustomer
というプロパティを指定したいため、CustomersとItemsどちらのDBにもcustomer
というプロパティを作成しておく必要があります(現時点でリレーションキーに使用可能なプロパティタイプはtitle
, select
, multi-select
)。また、ItemsのcustomerにはCustomersのcustomerに設定された値を設定しておく必要があります。
DBのIDの調べ方
また、notion-db-auto-relator用のSettings DBにはParent、Child DBのIDを設定する必要があります。DBのIDの調べ方は対象のDBを以下のようにOpen as page
またはOpen in new tab
で開き、
表示された以下のようなURLの0b5f5f7a753d46ec8d6a8af7f5035371
がそれに該当します。
https://www.notion.so/.../0b5f5f7a753d46ec8d6a8af7f5035371?v=xxx
そしてわかった各DB IDを以下Parent DB Id
、Child DB Id
に設定します。
notion-db-auto-relatorの実行
今回はLocalでnotion-db-auto-relatorを実行します
$ git clone git@github.com:litencatt/notion-db-auto-relator.git $ cd /path/to/notion-db-auto-relator $ yarn $ NOTION_TOKEN=<YOUR_NOTION_TOKEN> SETTINGS_DB_ID=<YOUR_SETTINGS_DB_ID> yarn start
実行結果
CustomersにRelation with customer
というプロパティが追加され、Itemsのcustomerプロパティに名前があるitemのリレーションが自動作成されました。
今回の例では動作説明のためにあえてシンプルなリレーションを行っているためこの程度の規模感であれば設定の手間を考えると手動でリレーションをしたほうが早いでしょう。
notion-db-auto-relatorを導入することでメリットが得られるケース
次に示すのは3つのDB間において2つのプロパティ値をリレーションキーとしてリレーションする方法を紹介します。
ここでは例としてサービス毎に機能名がまとめられたFeature
というDBをParent DBとし、このDBに対して機能仕様のページを持つSpecification
や運用マニュアル集であるOperation Manual
をリレーションさせてみます。ここではDBのIDをわかりやすくするためにあえてDB名横の()内にIDを記載しています。
このケースでは複数のプロパティをリレーションキーとして使用するためにカンマ区切りでServiceとFeatureのプロパティ名を設定しています。 そうすることでFeatureDBのServiceとFeatureの値のペアでリレーション作成時の紐付け対象をフィルタすることができます。
右のauto-relator実行後の結果から分かる通り、FeatureDBにはサービス毎かつ機能名毎にSpecificationとOperation Manual DBのページがリレーションされている事がわかります。 また、GitHub Actionsなどでこの設定のnotion-db-auto-relatorを定期的に実行させておくようにしておけばSpecificationやOperation Manualのページが追加されたとしてもServiceとFeatureのプロパティ値が適切に設定されていればリレーションも自動的に更新させていくことが可能です。
以上、もし良ければ使用してみた感想やフィードバックなどもいただけるとありがたいです。