Forguncy(フォーガンシー)で見積管理システムを作ってみました!(7)
Excel関数もグラフも使えて画面も変更できる、ノンプログラミングWebシステム開発ツール「Forguncy(フォーガンシー)」。
前回に引き続き、見積管理システムを作ります。
↓↓ 前回の記事はこちら ↓↓
今回は、以前作成した「簡単な見積管理システム」にメールによる通知機能を追加したいと思います。
以下のタイミングで通知を行います。
- 承認処理を要求されているとき(ワークフロー担当になったとき)
- 承認処理がされたとき
- テーブルデータが更新されたとき
そこで、Forguncyに用意されているメール送信機能について調べてみました。
Forguncyに用意されているメール送信機能には、以下のものがあります。
- メール送信コマンド
- メール通知の登録コマンド
- SendMailメソッド
- パスワードのリセット案内メール
先ずは、ボタン型セルと「メール送信コマンド」を使って任意のタイミングでのメール送信機能を確かめてみます。
メール送信機能を使用する場合、事前に送信メールサーバーの設定を行う必要があります。
オンラインヘルプに以下の記載がありましたので、設定前に確認してください。
- メール送信機能を使うためには、SMTP(簡易メール転送プロトコル)を利用できるメールサーバーが必要です。メールサーバーを持っていない場合、GmailやOutlook.comといったWebメールのサービスをSMTP送信サーバーとして利用することも可能ですが、認証に使用するメールアドレス(ユーザー名)と送信元のメールアドレスが異なっていても、メールの送信が許可されている必要があります。そのような設定に変更できない場合、SendGridやAmazon SESといったメール配信サービスの利用を検討してください。
- アプリケーション開発時にForguncy Builder上で設定したメール送信サーバーの設定は、運用環境に引き継がれません。Forguncy Serverのサーバー管理ポータル上で設定しなおす必要があります。
- SMTPS(SMTP over SSL/TLS)には対応しておりません。設定やご利用いただいているメール配信サービスによって異なりますが、ポート番号は465を利用することが多いため、設定がうまくいかない場合はSMTPS(SMTP over SSL/TLS)を利用していないかご確認ください。
送信メールサーバーの設定は、開発時ユーザーアカウント管理画面を用います。(運用時にはForguncyサーバー管理ポータルを用います)
以下の手順で開くことができます。
- Forguncy Builderの「ユーザー認証」リボンタブにある「開発時ユーザーアカウント管理」をクリック
- 管理者のユーザー名とパスワードを入力してログイン
(Forguncyの規定の管理者アカウントはアカウント名:Administrator、パスワード:123456です)


開発時ユーザーアカウント管理画面が開いたら、「設定」-「送信(SMTP)」をクリックし、必要な項目を入力します。

必要な項目を入力したら「テストメールの送信」ボタンをクリックして、テストメールが送信先アドレスに届くことを確認します。
無事にテストメールが届いたら、「設定の保存」ボタンをクリックします。
送信が失敗する場合の原因の1つに、SMTPサーバーの中には送信元のメールアドレスと送信サーバーのユーザー名が一致していないと送信できないという設定が、規定値として設定されていることがありますので、その場合は、SMTPサーバー側の設定を変更するか、送信元のメールアドレスと送信サーバーのユーザー名を一致させる必要があります。
以上で、送信メールサーバーの設定は終わりです。
次に、「簡単な見積管理システム」のTOP画面にボタン型セル「メール送信」を作成します。

「メール送信」ボタンのコマンドは、「メール送信」を設定します。

宛先アドレスには受信を確認できるアドレスを指定します。
差出人アドレスには、「送信者となる電子メールアドレスの文字列」「フォーム認証のユーザーの「ユーザー名」」「セルの参照値」「%CurrentUser%(ログインユーザー)」のいずれかとなっていますが、利用するSMTPサーバーの設定によっては、ユーザーアカウント管理画面のメールサーバーの設定と同じメールアドレスを指定します。
デバッグを開始し、「メール送信」ボタンをクリックしたところ、テストメールを受信したことを確認できました。
いよいよワークフローのプロセスに「メール送信」コマンドを追加して、承認要求の通知と承認結果の通知を追加します。
「見積リスト」テーブルのワークフローダイアログを開きます。

それぞれのアクションの実行後コマンドに、「メール送信」コマンドを設定します。
●「提出」アクション:

ワークフロー設定の中で使う「メール送信」コマンドでは、宛先に以下のキーワードが使用できます。
- %ReleatedAssignTo%:関係する承認者。承認者が3人(A,B,C)いた場合、3人に送信します。もしAが承認済みの場合、BとCの2名に送信します。
- %HistoryPartner%:ワークフローの履歴に含まれる人
- %AssignTo%:次の担当者
- %Creator%:作成者
- %LastModifier%:最終更新者
今回は、次の担当者である「%AssignTo%」を選択しました。
本文には数式が使用できたので、ワークフローバーがある「見積書プレビュー」ページの非表示エリアに次の担当者の氏名を表示させ、セル参照をしてみました。

また、「メール本文の編集…」をクリックすると、画面右側に表示されるキーワードを使用できたので、「提出」アクションの実行者(%CurrentUser.FullName%)を挿入しました。
●「承認」アクション:

宛先には、見積書提出者である作成者(%Creator%)を選択しました。
本文には、キーワードを使って作成者の氏名(%CurrentRow=(見積リスト,作成者.氏名)%)を挿入しました。
●「却下」アクション:

「承認」アクションと同様です。
設定は以上ですが、確認するために開発時ユーザーアカウント管理画面から見積書作成者とそのリーダーのメールアドレスを実際に受信できるメールアドレスに変更します。
今回は、「正門 恵子」さんとリーダーである「秋山 秀樹」さんのメールアドレスを変更してから、デバッグを開始しました。
確認手順は以下です。
- 「正門 恵子」さんのアカウントでログイン
- 見積書作成をして「提出」ボタンをクリック
- 次の担当者に「秋山 秀樹」さんを指定して「OK」をクリック
- 以下内容のメールを受信
- ログアウトして「秋山 秀樹」さんのアカウントでログイン
- 先ほど「正門 恵子」さんのアカウントで「提出」した見積書を表示
- 「却下」ボタンをクリック
- 以下内容のメールを受信
- ログアウトして「正門 恵子」さんのアカウントでログイン
- 「却下」された見積書を表示
- 再度、次の担当者に「秋山 秀樹」さんを指定して「提出」ボタンをクリック
- ログアウトして「秋山 秀樹」さんのアカウントでログイン
- 先ほど「正門 恵子」さんのアカウントで「提出」した見積書を表示
- 「承認」ボタンをクリック
- 以下内容のメールを受信



設定した通りの動作で、承認要求の通知、承認結果の通知を確認できました。
次に、マスターテーブルである「取引先情報」テーブルが更新された際、自動で通知メールを送信する機能を追加します。
用いるコマンドは「メール通知の登録」です。
「取引先情報」ページに「メール通知の登録」コマンドを設定するボタン型セルを追加します。

コマンドは次のように設定します。

設定はこれだけです。
今回は、部長である「葛城 孝史」さんのメールアドレスも変更しておきます。
デバッグを開始して、以下の手順で確認します。
- 「正門 恵子」さんのアカウントでログイン
- 「取引先情報」をクリック
- 「メール通知の登録」ボタンをクリック
- 「すべての変更を通知する」にチェックを入れて「OK」をクリック
- 「正門 恵子」さんに設定したメールアドレスで通知設定完了メールを受信
- 「葛城 孝史」さん、「秋山 秀樹」さんのそれぞれのアカウントでログインして、2~5を繰り返す
(作成したメール通知機能を受け取るか受け取らないかはユーザーアカウントごとに設定できるため) - 「秋山 秀樹」さんのアカウントでログイン
- 「取引先情報」をクリック
- リスト中のいずれかの「編集」をクリックしてデータを変更
- 「登録」ボタンをクリック
- 「正門 恵子」さん、「葛城 孝史」さん、「秋山 秀樹」さんのそれぞれに設定したメールアドレスで通知メールを受信
- 「葛城 孝史」さんのアカウントでログインし、取引先情報を編集
- 「登録」ボタンをクリック
- 「正門 恵子」さん、「葛城 孝史」さん、「秋山 秀樹」さんのそれぞれに設定したメールアドレスで通知メールを受信
- 「Administrator」でログインし、取引先情報を削除
- 「正門 恵子」さん、「葛城 孝史」さん、「秋山 秀樹」さんのそれぞれに設定したメールアドレスで通知メールを受信









Forguncyに用意されているコマンドだけで、更新日時や更新者を含めたテーブルの更新通知メールを送信することができました。
今回もコードを使っていません。
もちろんSendMailメソッドを使用して、JavaScriptから送信先とメールのタイトル、本文を指定してメールを送信することもできるようです。
今後もForguncyに用意されている機能を使って、簡単にアップグレードしてみたいと思います。