はじめに
hkob の雑記録の第272回目は、Notion座談会で約束した閲覧権限付き議事録管理DBのテンプレート作成の忘備録です。
ベースページの作成
今回のテンプレートはビジネスプラン以上でしか動作しないので、いつもの学割プラスプランのアカウントではなく、職場の管理者アカウントで作成することにしました。個人のビジネスはアンバサダー用の特殊なビジネスプランなので、あまり公開に向かないかと思うためです。そもそも職場の管理者アカウントでは、すでにクリエーター登録してあるので、それを流用していきます。
まず最初に必要となるデータベースを含むベースページを作成します。今回の注意事項としてデータベースを公開しないので、プライベートエリアをわかるようにしてみました。

会議一覧のデータソース
最初に作成したのは会議一覧です。参加者で選択されたユーザにページを編集する権限を付けています。

議事録一覧のデータソース
同様に議事録一覧のデータソースを追加しました。

プロパティは以下のようにしました。チェックボックスはわかりにくいので、新規作成は、隠し属性のチェックボックスを押すだけのボタンにしてみました。また、AI要約は複製時にエラーになる可能性があるようなので、AIの機能だけ切ってあります。

データベースオートメーションの追加
これらのプロパティに対して、以下の3つのデータベースオートメーションを追加しました。

日付設定時のデータベースオートメーション
日付設定時には、議事録のタイトルを設定します。

設定した値は以下のような数式です。会議名と日付からタイトルを作成しています。
lets( meeting, context("トリガーページ").prop("会議").first(), meeting_str, meeting.empty() ? context("トリガーページ").prop("その他") : meeting.prop("会議名"), date, context("トリガーページ").prop("日付"), date_str, date.empty() ? "" : date.formatDate(" (YYYY/MM/DD)"), meeting_str + date_str )
会議設定時のデータベースオートメーション
会議設定時には、参加者を会議から複製します。また、同時に名前も設定しています。名前の設定した値は上と同じです。

参加者の設定した値は以下のようになっています。単なるコピーではトリガーしたユーザが会議に登録されていないと、その議事録が見えなくなってしまうので、追加しています。ただ、ボタンが押せている時点ですでに参加者に入っているはずなので、あくまで保険として入れているだけです。
lets( org, context("トリガーページ").prop("参加者").concat([context("トリガーしたユーザー")]), conf, context("トリガーページ").prop("会議").first(), ans, conf.empty() ? org : org.concat(conf.prop("参加者")), ans.sort().unique() )
ボタン設定時のデータベースオートメーション
ボタンで新規ページを作成できればいいのですが、ボタンを押したユーザにはその権限がありません。そこで、ボタンを押した時に、このページのチェックボックスを「チェックあり」に変更します。今回のデータベースオートメーションは、このチェックボックスの変化をチェックしています。

参加者の数式は以下のようになっています。トリガーしたユーザが追加されるので、新しく作成されたページに編集権限が付与されることになります。
context("トリガーページ").prop("参加者").concat([context("トリガーしたユーザー")])
公開ページの作成
公開ページはこのようにリンクドビューを置きました。リンクドビューは器だけなので、中のデータソースに登録されたページは全ては表示されません。ユーザにこのページを共有すると、参加者に登録された議事録のみユーザが閲覧することが可能となります。

議事録ページのレイアウト
議事録ページは以下のようなレイアウトにしました。議事録のデフォルトテンプレートにミーティングノートを埋め込んでいます。

会議ページのレイアウト
会議ページのレイアウトは以下のようにしました。こちらはタブでその会議に関する議事録一覧を表示できるようにしてみました。

最終形態
ページ全体は以下のようになりました。公開ページにある「議事録一覧(公開ページ)」をシェアしてもらう形になります。

おわりに
この後、見た目の調整・説明書きなどを追加して、テンプレートを提出してみようと思います。