Blog

Notionフォームの入力値をValidationしたい

ねんがんのNotionフォームがリリースされました!

プロパティの入力値をフォームのフィールドとして設定でき、フォームを好きな場所に埋め込むことも可能です。Notion AIと組み合わせれば、自由記述からのキーワード抽出ができ、さらにグラフで可視化もできます。アンケートフォームなどでの活躍が期待できますね。

Notionフォームで主にできること

プロパティの入力⭕️ リレーションの選択も可能
ページ本文の入力
フィールドの入力必須化⭕️
フィールドの説明⭕️
フィールドの種類プロパティの種類に応じて変化
フィールドのValidation
見出しやテキストの挿入
入力後の自動処理⭕️ データベースオートメーション
フォームの埋め込み⭕️

Notionフォームには基本的な機能はありますが、まだ完全とは言えません。

特にValidation機能がないのが個人的に困っている点。プロパティなら仕方ないと思っていましたが、フォームの形をしているとこの機能が欲しくなります。

そこで今回は、NotionフォームにValidation機能を追加できないか検証してみます。

入力時やPOST前に制限をかけることはNotion単体ではできないため、入力後に値が期待通りかチェックする方法を取ります。今回のアップデートでオートメーションのアクションに数式や変数が使えるようになったので、これを早速活用してみます。

データベースオートメーションと数式(Formula)でValidationっぽいものを作る

覚えておくべきオートメーションの仕様

  • トリガー → アクション * n の2ステップまで
  • アクションはおそらく非同期で処理される
  • アクションを実行するユーザーは Notion (ユーザープロパティ等では選択できないシステムユーザー)
  • Notion ユーザーが実行したアクションは新たなオートメーションをトリガーしない
  • アクションの実行有無に関する条件分岐は設定できない
  • Slackへの通知内容はカスタマイズできない

メールアドレスと文字列のprefixをチェックするサンプルフォーム

フォームに入力してもらいたいフィールドを用意。
メールアドレスとSlackのチャンネル名を入力してもらい、入力規則に沿っているか確認するのが目的。

次に入力された内容が正常か確認するための ValidateLog プロパティを用意。

Validation本体はオートメーションを利用。
数式で正規表現にマッチするか調べて変数に格納。
変数の値を元に Validate と Log プロパティの値を更新、最後に入力したユーザーに通知を送信。

これで入力値が正しければ正常なメッセージの通知が行われ、間違っていれば修正を促す通知がフォーム送信者に送られる、Validationっぽいものが完成です。

ただし、この構成には課題もあります。初回フォーム送信時は問題ありませんが、編集時には文字を記入中でもトリガーが発火されるため、通知が頻繁に来てしまいます。通知はデータベースのページごとにまとめられるので、まだ許容できる範囲ではありますが、トリガーはボタンにしてもいいかもしれません。

まとめ

自力でValidationっぽいものは作れましたが、完成度がいまひとつですね。
フォームの内容に厳密性を求める場合は、まだGoogleフォームなど他のツールを使った方が良さそうです。フォーム機能の改善については、Notionにリクエストを送り実装されるのを期待して待ちましょう。

触ってみると分かりますが、最近のアップデートで表現力や柔軟性はかなり上がっています。特にオートメーションで数式や変数を使用できるのを求めていた人は多かったのではないでしょうか。この記事を読んで「今ならここまでできるのか、それならこれもできるのでは?」と新しいアイデアが湧くきっかけになったら嬉しいです。

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!