見出し画像

Japan kintone Weekの申し込み&アンケートシステム ②お申込みフォーム編

準備編に続いて、今回はお申込みフォームの作成についてご紹介します。

申込フォームは、トヨクモさんのフォームブリッジで作成しています。
フォームブリッジとは、kintoneと連携したWebフォームを作成できるサービスです。

フォームブリッジの基本機能は割愛してポイントのみご説明いたします。

なお、実際のフォームはこちらからご確認いただけます。
(実運用のフォームなので、テスト登録はご遠慮ください。
 もちろん、実際にイベントにご参加いただける方は大歓迎です!)

【ポイント1】何か操作をしたら「保存」を忘れずに!

フォームブリッジの最大の難関は画面下の「保存」ボタンを押し忘れること・・・
これを忘れると設定漏れに繋がるのでご注意ください。

【ポイント2】「階層選択」で都道府県の入力を楽にする

kintoneになくてフォームブリッジにある便利な機能が「階層選択」。
今回オンラインイベントなので、ご参加者様の都道府県を知りたいものの、47個のプルダウンから選択するのは大変・・・

ということで、階層選択メニューを利用して、地域ごとに選択できるようにしました。
設定方法はトヨクモさんのマニュアルをご確認ください。

スクリーンショット 2020-03-28 23.25.17

【ポイント3】kViewerのMyページと連携させる

準備編で作ったkViewerのMyページと連携させます。

スクリーンショット 2020-03-28 22.57.25

【ポイント4】kMailerで自動返信メールを設定する

自動返信メールはkMailer連携を利用しています。
通常の自動返信メールを使っていない理由は、通常だと独自の差出人メールアドレスを利用できないためです。

また、メール本文には、kViewerのMyページURLを差し込みで入れておきます。

スクリーンショット 2020-03-28 23.01.42

【ポイント5】回答後の処理で、MyページURLを格納する

「回答後の処理」メニューで、通常のkintoneアプリ保存処理の後に、もう一度「kintoneアプリに保存」処理を追加し、MyページURLをkintoneのフィールドに格納します。
これは、リマインドメールなどでもMyページのURLをご案内するために必要です。

①「回答後処理を追加する」メニューから、kintoneアプリに保存する処理を追加します

スクリーンショット 2020-03-28 23.04.29

②作成した処理の「編集」から、MyページURLを該当フィールドに格納する設定を行います。

スクリーンショット 2020-03-28 23.03.51

③処理の順番が、一度目のkintoneアプリに保存の後、自動返信メールより前になるよう、下記のように入れ替えます

スクリーンショット 2020-03-28 23.03.21

【ポイント6】ボタンの名称を変更する

Webフォームから情報を登録する際、フォームブリッジの標準のボタン名は「回答」なのですが、今回はイベントへの参加なので「申し込む」に変更しています。
こちらは「多言語化設定」メニューから変更できます。

スクリーンショット 2020-03-28 23.08.25

【ポイント7】JSカスタマイズ

Japan kintone Weekのフォームでは、以下2つのJSファイルを登録しています。

①完了ページをリダイレクトする

お申込み完了ページはフォームブリッジの標準でもあるのですが、コンバージョンタグなどの埋め込みを容易にするため、今回は独自のページを用意しています。

独自の申込完了ページにリダイレクトするためには以下の内容のjsファイルを登録します。

(function() {
"use strict";
fb.events.finish.created = [function (state){
 parent.location.href = "独自の完了ページURL";
}];
})();

②ラジオボタンの初期値を外す & 必須項目の条件分岐対応

Japan kintone Weekでは、条件分岐によって必須項目の種類が異なるフォームになっています。
必須項目のフィールドが条件分岐によって隠れていると、標準だと回答できないので、カスタマイズを入れています。

また、ラジオボタンの初期値に回答が引きづられないよう、初期値を外す設定をしています。

この2つのカスタマイズは下記の内容のjsファイルを登録します。

※これは、トヨクモさんのこちらの記事こちらの記事を合体させたjsです。

//ラジオボタンの初期値を外す
(function() {
 "use strict";
 fb.events.form.created = [function (state) {
   state.record.フィールドコード1.value = "";
   state.record.フィールドコード2.value = "";
   state.record.フィールドコード3.value = "";
   state.record.フィールドコード4.value = "";
   return state;
 }];
})();

//必須項目の条件分岐対応
!function(e){var n={};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,n){if(1&n&&(e=r(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)r.d(t,o,function(n){return e[n]}.bind(null,o));return t},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="/",r(r.s=925)}({925:function(e,n){var r={},t=function(e,n){switch(n.rule){case"=":return e[n.field].value===n.value;case"!=":return e[n.field].value!==n.value;case"In":return-1!==e[n.field].value.indexOf(n.value);case"Not in":return-1===e[n.field].value.indexOf(n.value)}return!0},o=function(e,n){n.forEach(function(n){var o=function(e,n){return"and"===n.logical?n.rules.reduce(function(n,r){return n&&t(e,r)},!0):n.rules.reduce(function(n,r){return n||t(e,r)},!1)}(e.record,n);e.fields.filter(function(e){return-1!==n.fields.indexOf(e.code)}).forEach(function(e){e.show=o,e.validations=e.show?r[e.code]:[]})})},u=function(e){e.form.isBranchForm&&(e.fields.forEach(function(e){r.hasOwnProperty(e.code)||(r[e.code]=e.validations)}),e.form.branches.forEach(function(n){n.fields.forEach(function(e){fb.events.fields[e].changed.push(function(e){return o(e,n.conditions),e})}),o(e,n.conditions)}))};fb.events.form.created.push(function(e){return u(e),e}),fb.events.kviewer.record.mapped.push(function(e){return u(e),e})}});
//# sourceMappingURL=togglevalidate.js.map

【ポイント8】CSSカスタマイズ

見た目を色々調整しています。
素人が書いてるので、ご参考程度にしていただければと思います。

/* 画面が小さい時用 */
@media screen and (max-width: 1125px) { 

h1.ui.header {
   font-size: 20px!important;
}

h2 {
   font-size: 25px!important;
}

.ui.form{
 font-size: 12px!important;
}

.ui.form .field>label{
 font-size: 13px!important;
 padding-bottom: 1px!important;
}

.ui.button{
   font-size: 15px!important;
}

.ui.button.teal.fb-confirm{
 width: 100%!important;
}

}

/* ヘッダーの中央寄せ・文字間隔の調整 */
.ui.large.inverted.pointing.menu > *{
   margin: 0 auto;
}

h1.ui.header {
   font-size: 30px;
   letter-spacing: 2px;
   text-align: center;
   color: #fff ;
}

/* 見出しの装飾 */
h2 {
   font-size: 30px;
   background: linear-gradient(transparent 70%, #FED600  70%);
}

/* 文字サイズ・間隔などの調整 */
.ui.form{
 font-size: 13px;
 letter-spacing: 2px;
 padding-bottom: 1px;
}

.ui.form .field>label{
 font-size: 15px;
 padding-bottom: 5px;
}

/* ボタンの調整 */
.ui.button{
 letter-spacing: 2px;
 font-size: 18px;
 margin: 0 auto;
}

.ui.button.teal{
 width: 50%;
 background-color: #3498db ;
 border: 1px solid #e3e7e8 ;
}

.ui.button.teal:hover{
 width: 50%;
 background-color: #217bb8 ;
 border: 1px solid #e3e7e8 ;
}

.ui.button.orange{
 width: 40%;
 background-color: #f7f9fa ;
 color: #3498db ;
 border: 1px solid #e3e7e8 ;
}

.ui.button.orange:hover{
 width: 40%;
 background-color: #bacbd4 ;
 color: #3498db ;
 border: 1px solid #e3e7e8 ;
}

/* 箇条書きの調整 */
ul li, ol li {
 line-height: 2!important;
 padding-left: 0.5em!important;
}

/* 完了ページからMyページリンクを消す */
.my-page{
 display: none!important;
}

ちなみに誰も気付いてないと思いますが、上記のCSSではボタンの色をkintoneの製品に寄せています。

スクリーンショット 2020-03-28 23.27.12

次回はMyページの設定をご紹介します。


この記事が気に入ったらサポートをしてみませんか?