【ワンランク上のPower Automate 開発】HP問合せ管理システムの作成

Power Automate 技術ブログ

HP問合せ管理システム

はじめに

こんにちは。西村です。弊社ではホームページをWordPressにて構築しております。WordPressには便利なプラグインが多数ありますが、お問合せフォームには「WPforms」というプラグインを利用しており、フォームへ投稿されるとメール通知が届きます。

しかし、メール通知の後、対応漏れなどが散見され、対応漏れを防ぎ、管理する仕組みがないことが課題でした。そこで、管理する仕組みとして、Power Automateを使って問合せ内容をSharePointリストへ保持、Teamsで参照する仕組みを構築しました。これにより、お問合せへの対応漏れを防ぎ、進捗を含めた管理が可能となりました。

今回、自社で構築し運用しております「HP問合せ管理」について、作成方法含めてご紹介いたします。

※お問い合わせデータに記入いただいた情報は、お客様のお問合わせに対する回答のために利用させて頂きます。それ以外の目的に利用する事は一切ございません。

構成図

HP問合せ管理システム概要
HP問合せ管理システム概要

ポイント

  • Microsort365ライセンス範囲で利用可能な機能のみで実現(追加ライセンス費用は不要)
  • Power Automateでメール定型文をローコーディングで各項目へ分割しSPOリストへ登録
  • お問い合わせ通知、SPO上の管理リストをTeamsへ埋め込みTeams内で完結
  • 管理リストで進捗を管理、お問い合わせの対応漏れを防ぐ
  • SPOリスト、Teamsチャネルは管理担当者のみアクセス可能としセキュアな環境を構築

以下、前提から順に本システムの構築手順を解説していきます。

HP問合せメールフォーマット

弊社ではお問合せフォームに 「WPforms」 を利用しており、フォームの項目は任意に作成できます。
以下のような形式でフォームを作成しています。

HPのお問い合わせフォーム

お問い合わせフォームに入力があると、以下のような形式でメールが届きます。タイトルは弊社側で設定したものですが、本文はフォーム項目と同内容の定型文面となります。

メールフォーマット

このメール受信をトリガーにしたフローを作成し、定型文を分解してSPOリストへ登録します。

SPOリストの作成

まずはデータ登録先となるSPOリストを作成します。項目は以下としています。
※SPOリストの作成手順は簡単なので手順は割愛します。任意のサイト上にリストを作成し列を追加していきます。

重要:サイトおよびリストは担当者、管理者以外はアクセスできないようにセキュアな設定を行ってください。

■作成する列

  • 日付 (日付と時刻) 
  • 種別 (1行テキスト)
  • 会社名 (1行テキスト) ※タイトル列をリネーム
  • 担当者 (1行テキスト)
  • 担当者メール (1行テキスト)
  • 本文 (複数行テキスト)
  • ステータス (選択肢:未対応、対応中、対応済み、など任意) ※管理用の項目
  • 重要度 (選択肢:低、中、高、など任意) ※管理用の項目
SPOリスト(ビュー上から列の種別を指定して追加。リスト設定から詳細な指定も可能)

ビューもカスタム出来ますので、「新着順ビュー」(並びを登録日時降順とする)、「カテゴリ別ビュー」(種別でグループ化する)、「未対応ビュー」(ステータス:未対応のみ表示)など、用途に応じたビューを作っておくと、進捗管理がし易くなりますのでお勧めします。このあたりがSPOリストがエクセルより便利に使える点でもあります。

Automate メール受信・解析

次にAutomateでフローを作成します。作成したフローの全体は以下のようになります。非常にシンプルです。

■フロー全体

HP問合せフロー全体図

■トリガー

「Office 365 Outlook」トリガー「新しいメールが届いたとき (V3)」をトリガーにフローを作成します。
※フォームからの通知を受信できるユーザーである必要があります。
※共有メールアドレスへの受信をトリガーにする場合は、アクセスのあるユーザーで「新しいメールが共有メールボックスに届いたとき (V2)」を利用できます。

今回はHP問合せメール用にフォルダーを作り、メールの振り分けルールで格納しているため、このフォルダーを対象に指定。件名には、「【HP問合せ】」が必ず含まれるため、こちらを条件にしました。
このトリガーでは、宛先(To)、CCや差出人(From)、添付ファイル有無など、非常に多数の条件を指定できます。ニーズに合った条件を指定することで、特定のメール受信時のみフローを実行させることができます。トリガー条件などの詳細は公式ページをご確認ください

■HTMLからテキストへ変換

トリガーでメールタイトル、本文などの情報を取得できます。今回のメール本文はHTML書式ですので、タグや書式などを含んだ情報となります。このままだと扱いずらいので、分割しやすいようにHTML⇒テキストへ変換します。

「Htmlからテキスト(プレビュー)」アクションを追加し、動的なコンテンツを追加で「本文」を指定します。※アクションの追加>すべてで「Html」で検索すれば出てきます。

実行すると以下のように、HTMLからタグなどの情報を除いたプレーンテキストに変換されます。

HTMLからテキスト(プレビュー)の結果例

■項目の分割

プレーンテキストを確認すると以下のようになっています。

  • 各項目名(赤下線)<値>で続いた形式になっている(タブなどの区切りなし)
  • 項目と項目の間には「改行」が2つ入っている

改行2つで区切れば、種別、会社名、名前、メール、内容が区切れそうです。
まずは改行2つで分割するために改行2つを定義します。「変数を初期化」アクションを追加して、実際に改行を2つ入力します。※変数にして使うことで改行を判定できるようになります。

次に同じく「変数を初期化」アクションを追加します。種類をアレイにして、値には動的なコンテンツ>式で以下のように入力します。

split(outputs('Html_to_text')?'body'],variables('改行コード'))

※ポイント:いったん式に「split() 」までを入力して、()内にカーソルを当て、動的なコンテンツに表示を切り替えて項目を選択すると式の中に対象が入ります。「HTMLからテキスト」の「プレーンテキストコンテンツ」(出力)を選択すると「 outputs('Html_to_text')?'body'] 」が入ってくれます。カンマを入れて改行変数を選択すれば上記のように式を記載できます。(もちろん直書きも可能)

プレーンテキストを改行コード2つで区切って配列として変数に格納しています。結果としては以下のようになります。

これで「お問い合わせ種別」、「会社名」、「名前」、「メール」、「お問い合わせ内容」の5つに区切ることが出来ました。この後の処理で[0]や[1]で指定する事で、各行を取得できます。

項目名と値の間にも:などの特定文字があれば、そこで区切りさらに分割も可能ですが、この定型文では特に区切りがないため、お問い合わせ種別は1行目、会社名は2行目などと特定することで対応します。もともと5つの固定項目なので問題はありません。項目名と値の分割判定についても固定値で判定することとしています。(会社名の項目であれば”会社名”以降を値とする)

Automate SPOへ保存

続いてSharePoint の「項目の作成」アクションを追加します。サイト、リストには作成したHP問合せ管理リストを指定します。※アクションタイトルはわかりやすく変えてます。

各項目には以下のように指定しています。
お問い合わせ種別の場合は、分割したアレイ変数の1行目(※1行目は[0])として、「variables(‘bodyArray’)[0]」とし、replaceで”お問い合わせ種別”を空にしてます。(項目名を排除して値のみとする)同様に他の項目も指定。
日付はトリガーから受信日時を指定し、本文はプレーンテキストをそのまま指定します。

※いったん変数を初期化アクションを使って、各項目の値用の変数を定義し式を入力しておき、変数をSPOリストの更新箇所に指定することも可能です。今回はそれほど複雑ではないのでそのまま指定しています。

  • Title(会社名): 式で入力「replace(variables('bodyArray')[1],'会社名','')
  • 日付:      動的なコンテンツ:トリガーの「受信日時」
  • 種別:      式で入力「replace(variables('bodyArray')[0],'お問い合わせ種別','')
  • 担当者:     式で入力「replace(variables('bodyArray')[2],'名前','')
  • 担当者メール:  式で入力「replace(variables('bodyArray')[3],'メール','')
  • 本文:      動的なコンテンツ:Htmlからテキストの「プレーンテキストコンテンツ」
各項目に適用する式

上記が実行されると以下のようにSPOリストへ各項目が登録されます。

SPO HP問合せ管理リスト

Teamsへの投稿アクション

続いて、Teamsの特定チャネルにメール受信したことを通知します。
Teams「チャットまたはチャネルでメッセージを投稿する」を指定して、対象のチーム、チャネルを指定します。メッセージにトリガーの件名とHtmlからテキストで変換したプレーンテキストコンテンツを指定します。
※このアクションは必要に応じてでよいと思いますが、Teams通知からリストを開いての管理がスムーズになります。またメール通知に気付きにくい環境の場合はTeamsのみ気にしておけばいいので便利です。

重要:チーム、チャネルのメンバーは担当者、管理者のみとしてください。

Teams通知サンプル

フローの作成はここまでで完了です。

TeamsへSPOリストの埋め込み表示

最後にTeamsのチャネルにSPOリストを追加します。SPOリスト上でそのまま管理も可能ですが、Teamsへの通知からそのままTeams上で追加されたお問い合わせを確認することができるため便利です。必要に応じてSPO上で開くこともできます。

対象のチャネルを開き上部の「+」からタブを追加。SharePointを選択して、作成したHP問合せリストを指定します。TeamsのタブにSPOリストがそのまま追加されます。

Teams SPOリストを埋め込んで利用

■問合せ管理

広げるアイコンで画面上広く使うことも可能ですし、ポップアウトウィンドウで別画面で開くこともできます。「SharePointで開く」からSPOリストへアクセスして開くこともできます。(必要に応じてSPOからエクセルへのエクスポートもできます)
HP問合せ管理リストでは、内容の確認、およびその後のステータス(対応中、対応済みなど)を更新します。他の担当者への状況の共有ができます。必要に応じて対応メモなどの列を追加してもいいと思います。
また前途した未対応のみ表示するビューを作っておけば、対応漏れをさらに防げます。

おわりに

長々としたブログとはなってしまいましたが、内容としては半日あれば構築できます。コーディングもほんの少しだけで完成しますので、システム開発経験者でない方でも構築できるシステムとなります。もちろんM365ライセンス範囲内での実装なので、追加ライセンス費用も発生しません。

WordPressは現在全世界でシェア約4割、国内では8割ほども使われているようですので、同じようなHP用フォームを利用されている会社様は多いかと思います。すでにシステムで管理されているケースも多いと思いますが、Microsoft365を利用されている場合は、通常ライセンスの範囲でこのようなシステムを容易に作成することができます。また、導入をお考えの場合であれば、メリットのひとつとなるかと思います。
本ブログが参考となれば幸いです。

【お知らせ】 Power Platform コンサルティングサービスのご提供を開始いたしました。

本サービスはPower Platform(主にPower Apps、Power Automate)をご利用のお客様において、開発時や運用時のお困りごとに対し、チャットやTV会議を用いてのQA対応やアドバイス、サンプルコードのご提供などの業務サポートを行い、お客様のDX化推進業務を強くサポートするサービスとなります。

導入事例

本ブログに興味を持たれましたら、技術支援や同様のカスタマイズ開発など、各種ご支援させていただきますので、お気軽に「お問い合わせフォーム」よりお問い合わせください。
今後も自社で開発したお役立ちアプリや技術支援を行ったアプリのご紹介など、定期的に更新を行っていきます。

関連記事