Microsoft FormsにTeams通知や自動応答を追加する

Microsoft365には、Googleフォーム同様にフォーム作成アプリとして、「Microsoft Forms」というものが存在します。ただ、正直言ってGoogleフォームよりもかなり低機能で、あまりアプリとしても機能強化は図られていません。

そんなFormsですが、Googleフォームと違いスクリプトが使えるわけではないので、機能増強となると送信時イベントでPower Automateを使う手段があります。この連携を使ってTeamsへの通知や送信者に自動応答メールを実装してみたいと思います。

フォームをまずは作成

Formsのサイトにサインインして、適当にフォームを作ります。Formsにも自動応答の簡単なメール通知などの機能は以下の手順でセットできますが、今回はこれを使いません

  1. Formsのフォーム作成画面を開く
  2. 右上の「…」を開く
  3. 設定をクリックする
  4. 応答の受信確認の項目で送信後に応答の受信をを許可するにチェックで自動応答されます。
  5. 各回答の通知をメールで受け取るにチェックで自分宛てに送信の通知が送られます。

右上の共有をクリックして、回答の送信と収集にて、URLが表示されてるのでコピーしておきましょう。このURLがユーザに表示されるフォームのURLになります。

図:フォームの作成自体は難しくない

図:自動応答と通知の設定

SharePoint等にExcelファイルをアップする

Formsから投稿される内容を記録する為のExcelファイルをOneDriveもしくはSharePointにアップロードします。データの記録はテーブル形式でなければ書き込めないので、予めテーブル化しておいたExcelファイルを準備しておきます。またFormsの項目分だけ列とタイトルもセットしておきます。以下の手順で範囲内をテーブル化できます。

  1. Excelを起動する
  2. 範囲選択する
  3. 挿入タブのテーブルをクリックする
  4. 先頭行をテーブルの見出しとして使用するにチェックを入れ、OKをクリックする
  5. デザインタブを開くと、テーブル名に現在のデフォルトのテーブル名が入ってるので、適当に変えてみる

保存したら、SharePoint等にアップしておきましょう。今回は、特定のページのドキュメントフォルダ(General)にアップしてみました。

図:テーブル化したシートである必要がある

図:SharePointにアップしてみた

Power Automateで追加機能を装備する

Power Automateにサインインして、このFormsに機能を追加します。Googleフォームもそうなのですが、基本は送信時イベントしか無いので、Power Automateでも送信時からイベントが発生します。そこからタスクランナーで処理を作り込みます。

新規フローを作成する

新規にフローを作成します。左サイドのマイフロー⇒新しいフローをクリック⇒自動化したクラウドフローをクリックします。最初のトリガーは、Formsで検索すると出てくる「新しい応答が送信されるとき」を選び適当にフロー名を設定します。

図:最初のトリガーはこれだけ

フォームの指定と値の取得

前項の作成後にはまだトリガーのフローのみで他に何もありません。まずは以下の手順でフォームの指定と値を取得できるようにします。

  1. 新しい応答が送信される時では、フォームIDをクリックし、前述で作成したフォームが出てくるので選択します。
  2. 新しいステップをクリックする
  3. 「応答」と検索して、「応答の詳細を取得する」アクションを選ぶ
  4. フォームIDは1.と同じものを指定。応答IDをクリックすると、動的なコンテンツダイアログが出てくるので、その中にある応答IDをクリックして選ぶ

これでフォームの指定と値の取得が出来るようになりました。

図:この2つはワンセットで必要です

Excelに書き込みさせる

続けて取得した値をSharePointにアップロードしたファイルに書き込みをさせるフローを追加します。

  1. 新しいステップをクリックする
  2. Excelで検索して、「表に行を追加」アクションを追加します。
  3. 場所をクリックして、SharePointやOneDriveの所定の場所を指定します。今回はSharePointの前述のサイトを指定しました。
  4. ドキュメントライブラリではアップロード先を指定。今回はドキュメントを指定
  5. ファイルをクリックし、アップロードしたファイルがリストに出てくるので選択する。
  6. テーブルでは、そのExcelの中にあるテーブルを指定します。テーブル以外は出てこないです。
  7. Formsの内容を読み取って項目分だけ入力欄が用意されてるので、それぞれクリックして、動的なコンテンツダイアログを表示し、質問タイトルを選んで入れていく

これで、フォーム内容が次々に新規行として書き込まれていきます。

図:Excelファイルに書き込みをするフロー

Teamsチャンネルに通知チャットを送る

続いて、メールではなく自身が参加してる特定のチャンネルに送信された通知を自動で書き込みするようにしてみます。

  1. 新しいステップをクリックする
  2. Teamsで検索して、「メッセージを投稿するV3」を選択する
  3. チームをクリックして、自分の参加してるチームを選択する
  4. チャネルではそのチーム内にあるチャネルを指定します。
  5. メッセージでは、Formsの投稿内容を利用できます。応答の詳細を取得するの項目から部品だけ取り出して、本文を構成します。

これで、Forms送信されると、チャネルに通知が飛んできて確認することが可能になります。

図:Teams投稿のフローでメッセージを投稿

自動応答メールを構築

Forms標準の自動応答だと簡素すぎるので、メール送信のフローを追加してカスタマイズされたメールで送信者に自動応答メールを送ることができます。

  1. 新しいステップをクリックする
  2. メールの送信で検索して、「メールの送信V2」を追加します。
  3. 宛先をクリックし、動的なコンテンツダイアログにて、応答の詳細を取得するから、「Responder's Email」を選びます(但しコレは匿名送信時には使えないので、その場合は、メアド入力欄を設けて入れてもらう)
  4. 件名、本文を構築。動的なコンテンツダイアログからExcelに追記した内容などのパーツから構築する

最後に保存をクリックするとフローが保存されます。これでForms送信時に各種アクションが順番に発火してくれるようになります。

図:署名やらなにやら細かく構築出来るのでオススメ