NotionのDBのリレーション作成・更新を自動化するGitHub Actions - light_and_cat
作成日
2022/04/07
オススメ度
👍👍
ひと言メモ
RelationをGitHubで自動化!
カテゴリDBカテゴリ

TL;DR
- notion-db-auto-relatorをNotion上における複数DB間の複雑なリレーションを自動かつ定期的に更新したい場合に導入してみてほしいです
notion-db-auto-relatorとは
NotionのDBにはRelationという機能(DBにあるページの相互参照可能な仕組み)が存在しますが、このリレーションを定期的に自動更新させたいと考え、今回 notion-db-auto-relator という仕組みを作成しました。
この仕組はローカルでも実行可能ですし、GitHub Actionsとしても公開していますので利用環境に応じて好きな方を使ってください。
notion-db-auto-relatorを使用したリレーションを行うためにNotion上で4ステップの準備が必要です。
準備の手順や詳細はレポジトリにあるドキュメントを参照して準備を行ってください。
DBの準備と設定
今回はNotionのRelationの説明ページに例として使われているCustomersとItemsのDBと似たスキーマのDBを用意し、今回CustomersをParentDB、ItmesをChildDBとみなしてこれらに対してのリレーションを自動作成・更新してみます。

notion-db-auto-relator実行前のCustomersとItems DB
ここで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
で開き、
DBのIDの調べ方
表示された以下のようなURLの
0b5f5f7a753d46ec8d6a8af7f5035371
がそれに該当します。Plain Text
そしてわかった各DB IDを以下
Parent DB Id
、Child DB Id
に設定します。
notion-db-auto-relatorの設定例
notion-db-auto-relatorの実行
今回はLocalでnotion-db-auto-relatorを実行します
Plain Text
実行結果

notion-auto-db-relator実行後のリレーション結果
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実行前、(右)auto-relator実行後
右のauto-relator実行後の結果から分かる通り、FeatureDBにはサービス毎かつ機能名毎にSpecificationとOperation Manual DBのページがリレーションされている事がわかります。 また、GitHub Actionsなどでこの設定のnotion-db-auto-relatorを定期的に実行させておくようにしておけばSpecificationやOperation Manualのページが追加されたとしてもServiceとFeatureのプロパティ値が適切に設定されていればリレーションも自動的に更新させていくことが可能です。
以上、もし良ければ使用してみた感想やフィードバックなどもいただけるとありがたいです。