Skip to content

フォーム機能 ​

第6版作成 最終更新 (日本時間)
対応バージョンPleasanter 1.4.23.0 以降確認バージョン1.4.23.01.5.8.1

Ver.1.4.23.0 で、Google Forms や Microsoft Forms のような Web フォームを作れる「フォーム機能」が追加されました。このページでは、有効化の手順、設定項目、サーバースクリプト・スクリプトで制御するときの Controller / Action の値、リンク項目の扱いを説明します。

有効化する ​

パラメータに Form.json が追加されています。Enabled を true に変更します。

diff
-   "Enabled": false,
+   "Enabled": true,

パラメータを変更したら、インスタンスを再起動してください。再起動後、テーブルの管理に「フォーム」タブが追加されます。

テーブルの管理に追加された「フォーム」タブ

公開する ​

「フォームを匿名ユーザに公開する」のチェックボックスを ON にすると、フォームの専用 URL が発行されます。更新してからその URL を開くと、編集画面と同じ見た目のフォーム画面が表示されます。

URL の仕組み ​

  • 専用 URL は /forms/{guid}/new で、{guid} はサイトの Sites.Form 列に保存される 32 桁の 16 進数です(SiteModel.cs)。画面には小文字で表示されます(SiteUtilities.cs)。
  • この値はチェックボックスを ON にした時点でブラウザ側で作られます(sitesettings.js)。crypto.randomUUID() からハイフンを除いて大文字にし、crypto.randomUUID() が使えない環境(HTTP 接続など、安全なコンテキストでない場合)では Math.random() を使って作ります(util.js)。URL が推測されにくいことが前提の機能なので、HTTPS で運用してください。
  • アクセスされると、ルートの guid を大文字にして Sites.Form と照合し、サイトを特定します(Context.cs)。このとき Form.json の Enabled か、契約設定の拡張機能 Form のどちらかが有効でないとサイトは特定されません(Context.cs)。

同じ「推測されにくい URL」の仕組みを使った、本体に無い機能の設計は iCal フィードの設計・外部 Webhook 受信の設計 にあります。

設定項目 ​

フォームの設定項目。公開チェックボックス・専用 URL・有効期限・利用不可メッセージ・サンクスメッセージ

設定内容
有効期限フォームを受け付ける期間。開始・終了のどちらかを空にすると、その方向は未設定(制限なし)になる
利用不可メッセージ有効期限外にアクセスしたときに表示されるメッセージ
サンクスメッセージフォームからの作成が完了したときに表示されるメッセージ

たとえば、特定の日から公開して終了日は決めない場合は、開始日時だけを設定します。

サーバースクリプト・スクリプトで制御する ​

フォーム画面でもサーバースクリプトやスクリプトによる制御ができます。フォームかどうかは Controller と Action の値で判別します。サーバースクリプトは少なくとも作成画面で実行されるので、項目の表示・非表示などの制御は十分に行えます。

サーバースクリプト ​

画面・処理条件ControllerAction
作成画面WhenloadingSiteSettingsformsnew
作成画面BeforeFormulaformsnew
作成画面AfterFormulaformsnew
作成画面BeforeOpeningPageformsnew
API:作成WhenloadingSiteSettingsformscreate
API:作成WhenViewProcessingformscreate
API:作成BeforeFormulaformscreate
API:作成AfterFormulaformscreate
API:作成BeforeCreateformscreate
API:作成WhenViewProcessingformscreate
API:作成WhenloadingRecordformscreate
API:作成AfterCreateformscreate
サンクス画面WhenloadingSiteSettingsformsthanks
利用不可画面WhenloadingSiteSettingsformsnew

スクリプト ​

画面$p.controller$p.action
作成画面formsundefined
利用不可画面formsundefined
サンクス画面formsundefined

スクリプトでは、いずれの画面でも $p.action は undefined です。参考までに、コード上の値は次のとおりです。

画面・処理ControllerAction
作成画面formsnew
利用不可画面formsnew
サンクス画面formsthanks
API:項目作成formscreate

リンク項目の扱い ​

リンクの親項目には権限制御がかかっているため、匿名ユーザのフォームではリンク項目は表示されません。基本的には選択肢を直接入力することを推奨しますが、リンク先のサイトで 情報公開機能 を使えば、フォームでもリンク項目を使えます。

その他の追加機能 ​

同じバージョンでは、添付ファイル項目の拡張子制御、CSP 機能の拡張、reCAPTCHA 機能なども追加されています。

関連ページ ​

変更履歴

第6版「フォーム機能」にスクリーンショットを追加
第5版外部連携の改修・設計メモ(iCal・RSS/Atom・Webhook 送受信・iPaaS・短縮 URL・POP 受信・マスターデータ同期)を追加
第4版「機能の仕様と使いこなし」「スクリプト」「サーバースクリプト」に対応バージョンを表示
第3版「機能の仕様と使いこなし」を 1.5.8.1 のソースで検証して修正
第2版記事のファイル名に並び順の番号を付け、元記事リンクを frontmatter の sources に移行
第1版「機能の仕様と使いこなし」セクションの記事を追加