知っ得!Formsアンケートで回答者を特定して一覧化する方法

Microsoft365

Formsアンケートで回答者の氏名や所属を特定して一覧化する方法について投稿します。

Formsってすごく便利ですよね!

手軽にアンケートを取ることができるようになりました。ユーザーからの声を集めたい、投票でモノゴトを決めたい、問い合わせフォームを作りたいなどの場面で大活躍するアプリです。

アンケートを作る際には、回答者の属性を入力項目として作ることもあるでしょう。氏名に所属、メールアドレスなど…

ジャル
ジャル

これってスマートなの?

アレコレメモ
アレコレメモ

Formsで回答する以前に、ユーザーはMicrosoft365にログインしているはずです。この属性をうまく使いたいですね。

Power Automateで可能です。

スポンサーリンク

MS Formsで回答者を特定したいというニーズ

回答者の属性がわかるとアンケートに深みを持たせることができます。

例えば、「職場とプライベートでワークライフバランスは取れていますか?」という質問に「はい」「いいえ」「どちらともいえない」といった選択肢で答えるとします。

Formsアンケート
アレコレメモ
アレコレメモ

完全にNo!

ジャル
ジャル

聞いてないから

普通なら「はい」で何人、「いいえ」で何人と集計しますよね。

これは 単純集計 と呼ばれるアンケート分析手法です。

以下は、回答者を円グラフでパーセント表示したものです。回答の内訳のみがわかります。

アンケート単純集計の例
アンケート単純集計の例

回答する人の属性が加わると別の見方をすることができます。

アンケートで回答者の属性がわかれば…
  1. 部署・所属別に回答の答えを集計
  2. 役職有無で回答の答えを集計
  3. 1.~2.やほかの設問を掛け合わせた集計

ユーザー属性が加わることで、アンケートの結果を多角的に見ることができます。

これは クロス集計 と呼ばれるアンケート分析手法です。

以下は、「部門」と「役職」の属性を加えたものです。

アンケートクロス集計の例
アンケートクロス集計の例

回答者情報を加えることで、アンケート結果が一段深くなります。

ジャル
ジャル

この表示がFormsでできるわけではないわよ。属性さえとっておけば、後からエクセルで加工できるということ。

Forms上で回答者の情報を集めるための必須設定

今回の方法では、フォーム上でユーザー情報は入力させずに回答者の情報を集めます。

アンケート本体でも回答する手間があるのに、「氏名」「部署」「メールアドレス」など入力項目を作ってしまうとさらに回答者の負担が増えてしまいますよね。

入力項目が多いと、回答者はアンケートから離脱する可能性もあります。

アレコレメモ
アレコレメモ

私、質問の多いアンケートを見ると心が折れそうになります。

ジャル
ジャル

アンケートが任意ならスルーするんでしょ。

Formsでは、回答者の属性を集めるための仕掛けが用意されています。

回答者の名前を記録する設定
  1. Forms編集画面の三点ボタンから「設定」を呼び出し
  2. 自分の所属組織内のユーザーのみが回答可能」あるいは「自分の所属組織内の特定のユーザーが回答可能」を選び、
  3. 名前を記録」にチェックを入れる

この設定を行うだけで、Forms上で「誰が回答したか」に関する情報が記録されます。

集計結果として生成されるエクセル

アンケート結果は、エクセルとして集計されます。

Formsアンケートで回答者を特定して一覧化する方法(Formsで生成されるエクセルファイル)
Formsで生成されるエクセルファイル

▲ 上記の通り、氏名とメールが記録されます。

メールはユーザープリンシパル名(UPN)でMicrosoft365にログインするIDとなります。会社によって、Exchange連携しているとこれがいつも使っているメールアドレスではない可能性もあります。

アレコレメモ
アレコレメモ

え、この情報だけ?「部門」や「役職」は?ってなるかと思いますが、この後にPower Automateを使って情報を加えます。

スポンサーリンク

MS Formsで回答者を特定・確認して一覧化する方法

アンケートの事後に回答者属性を調べる方法、アンケートをやりながら回答者属性を付加していく方法が考えられます。今回は、前者の事後に行う方法を紹介します。

もう一つのほうは、Teams連携なども加えて次の機会に投稿したいと思います。

以降は、多少なりともPowerAutomateに触れたことある人向けの書き方をするので、基礎から把握したい人は次のような書籍でトレーニングするのがよいかと思います。

参考 そのほかのPower Automate書籍

集計結果のエクセルから回答者属性を付け加える

まずは、Formsが自動生成するエクセルを使います。アンケート収集が終わったら、Formsからダウンロードしましょう。

こちらでは、元のエクセルを使って回答者属性を加えます。

回答者属性を集める手順
  • ステップ1
    集計済みエクセルを所定の場所へ格納する
  • ステップ2
    フローを作成する(Power Automate)
  • ステップ3
    フローを実行する(Power Automate)
  • ステップ4
    更新されたエクセルを確認する

このフローで処理できる行数には256行と制限があります。上限を超えるアンケート結果を取り扱う場合は、ファイルを分割するなどの処理が必要です。

ステップ1 集計済みエクセルを所定の場所へ格納する

Formsのアンケート収集が終わったら、アプリが生成するエクセルファイルをダウンロードします。

Formsアンケートで回答者を特定して一覧化する方法(Formsでアンケート結果をエクセルとしてエクスポートする)

▲ Formsの管理ページから該当のアンケートを開いて、「応答」→「Excelで開く」をクリックします。これでローカルにファイルがダウンロードされます。

ここからはオンライン上の領域に格納しますが、その前に一手間加えます。

Formsアンケートで回答者を特定して一覧化する方法(Formsでアンケート結果をエクセルとしてエクスポートする)

▲ エクセルファイルを開きます。通常は、画像のように表が 装飾 されています。

この装飾には、テーブル化 という意味があります。表が「明示的にテーブル化されている」=「行と列がはっきりした構造化データ」と考えられ、Power Automateでも表を扱いやすくなります。

Formsアンケートで回答者を特定して一覧化する方法(テーブル名を加える)

▲ 「テーブル」タブから右端の「テーブル名」を確認します。

テーブル化されていれば、何らかの名称(通常は「テーブル<番号>」の形式)が入っています。「テーブル1」だとわかりづらいので「アンケート結果」と名前を付け直します。

Formsアンケートで回答者を特定して一覧化する方法(列名の変更と列を加える)

▲ また、一部列名称の変更と追加の列を加えます。追加列は列名称のみ入れて中身は空でOKです。

ファイルの変更箇所
  • 列名称の変更
    • メール → ユーザープリンシパル名
  • 列の追加
    • 部署
    • 役職
    • 表示名
    • メールアドレス
Formsアンケートで回答者を特定して一覧化する方法()

▲ 編集を終えたらファイルを保存し、オンライン上の領域に格納します。ここではSharepointドキュメントライブラリに格納しました。

ステップ2 フローを作成する(Power Automate)

さて、フローを作成します。

Formsアンケートで回答者を特定して一覧化する方法(Power Automateフローの全体構成)
Power Automateフローの全体構成

トリガーは、ボタンフローとしています。

ファイル名を直接指定しているので、別のファイルを処理する場合はフローに手を加える必要があります。「表内に存在する行を一覧表示」アクションに渡すファイル名を動的にしようかと試みたのですが、後述のアクションで動的コンテンツが使えなくなってしまいました。

トリガーの定義(「手動でフローをトリガーします」)

フローは、ドキュメントライブラリ上でファイルに対して実行します。ファイル名や保存場所はあらかじめ決めておきます。

Formsアンケートで回答者を特定して一覧化する方法(トリガーの定義(「手動でフローをトリガーします」))

▲ トリガーとして「手動でフローをトリガーします」を選びます。特に設定は必要ありません。

エクセルデータを取得する

Excelアクション「表内に存在する行を一覧表示」を選んでデータを取得します。

Formsアンケートで回答者を特定して一覧化する方法(エクセルデータを取得する)
  • 場所:「サイトのアドレス」を指定
  • ドキュメントライブラリ:ライブラリ名を指定
  • ファイル:対象のファイルを指定する
  • テーブル名:「アンケート結果」を入れる

このトリガー処理できる行数には256行と制限があります。上限を超えるアンケート結果を取り扱う場合は、ファイルを分割するなどの処理が必要です。

行ごとに読み込み、回答者属性を加えていく

前のアクションでエクセルを読み込んだら、行単位にループ処理していきます。

Formsアンケートで回答者を特定して一覧化する方法(行ごとに読み込み、回答者属性を加えていく)

▲ 「コントロール」から「Apply to each」を選び、前のアクション「表内に存在する行を一覧表示」から取得できる動的コンテンツ「value(アイテムの一覧)」を指定します。

回答者属性を取得する
Formsアンケートで回答者を特定して一覧化する方法(回答者属性を取得する)

「Office365 Users」から「ユーザープロフィールの取得(V2)」を選んで、前のアクション「表内に存在する行を一覧表示」から取得できる動的コンテンツ「ユーザー プリンシパル名」を指定します。

行を更新する

最後に行を更新します。

Formsアンケートで回答者を特定して一覧化する方法(行を更新する)

「ユーザープロフィールの取得(V2)」から取得した動的アクションを使って行を更新します。

処理の作成はこれでおしまいです。ファイル名を毎回指定するというのは、汎用性に欠けるような気がしますが、Formsのアンケートも毎回異なるでしょうし、まぁこれでいいでしょう。

ステップ3 処理を実行する(Power Automate)

Formsアンケートで回答者を特定して一覧化する方法(フロー実行結果)

フローが完成したら処理を実行します。30行ほどのデータでちょうど30秒くらいでした。

ステップ4 更新されたエクセルを確認する

エクセルが格納されたドキュメントライブラリを開いて、ファイル更新結果を確認します。

Formsアンケートで回答者を特定して一覧化する方法(回答者属性が加えられたファイル)

ちゃんと回答者属性が付け加えられました。

こんなときは?

Q
部署や役職が表示されない
A

大きな会社であれば、Azure ADなどで人事情報が管理されているかと思います。そうでない場合は、管理者が管理センターで登録していることが考えられます。

Q
すべてのユーザーが回答可能なケースで回答者の情報を集めたい。
A

回答者の属性は「ユーザープロフィールの取得(V2)」を使って、ユーザープリンシパル名で調べています。Formsの入力欄にこの値をいれてもらうなどの運用が考えられます。

Q
ほかにはどんな回答者属性が付け加えられるの?
A

APIの「GraphUser_V1」を参考にしてください。あるいはフロー実行後の処理結果(「ユーザープロフィールの取得(V2)」の出力結果)を確認してください。

まとめ

Formsアンケートで回答者の氏名や所属を特定して一覧化する方法 について記事投稿しました。

後は取得した回答者属性とそれぞれの設問を掛け合わせていけば、アンケート結果として充実した情報が得られることでしょう。

参考 そのほかのPower Automate書籍