Formsアンケートで回答者の氏名や所属を特定して一覧化する方法について投稿します。
Formsってすごく便利ですよね!
手軽にアンケートを取ることができるようになりました。ユーザーからの声を集めたい、投票でモノゴトを決めたい、問い合わせフォームを作りたいなどの場面で大活躍するアプリです。
アンケートを作る際には、回答者の属性を入力項目として作ることもあるでしょう。氏名に所属、メールアドレスなど…
これってスマートなの?
Formsで回答する以前に、ユーザーはMicrosoft365にログインしているはずです。この属性をうまく使いたいですね。
Power Automateで可能です。
MS Formsで回答者を特定したいというニーズ
回答者の属性がわかるとアンケートに深みを持たせることができます。
例えば、「職場とプライベートでワークライフバランスは取れていますか?」という質問に「はい」「いいえ」「どちらともいえない」といった選択肢で答えるとします。
完全にNo!
聞いてないから
普通なら「はい」で何人、「いいえ」で何人と集計しますよね。
これは 単純集計 と呼ばれるアンケート分析手法です。
以下は、回答者を円グラフでパーセント表示したものです。回答の内訳のみがわかります。
回答する人の属性が加わると別の見方をすることができます。
- 部署・所属別に回答の答えを集計
- 役職有無で回答の答えを集計
- 1.~2.やほかの設問を掛け合わせた集計
ユーザー属性が加わることで、アンケートの結果を多角的に見ることができます。
これは クロス集計 と呼ばれるアンケート分析手法です。
以下は、「部門」と「役職」の属性を加えたものです。
回答者情報を加えることで、アンケート結果が一段深くなります。
この表示がFormsでできるわけではないわよ。属性さえとっておけば、後からエクセルで加工できるということ。
Forms上で回答者の情報を集めるための必須設定
今回の方法では、フォーム上でユーザー情報は入力させずに回答者の情報を集めます。
アンケート本体でも回答する手間があるのに、「氏名」「部署」「メールアドレス」など入力項目を作ってしまうとさらに回答者の負担が増えてしまいますよね。
入力項目が多いと、回答者はアンケートから離脱する可能性もあります。
私、質問の多いアンケートを見ると心が折れそうになります。
アンケートが任意ならスルーするんでしょ。
Formsでは、回答者の属性を集めるための仕掛けが用意されています。
- Forms編集画面の三点ボタンから「設定」を呼び出し
- 「自分の所属組織内のユーザーのみが回答可能」あるいは「自分の所属組織内の特定のユーザーが回答可能」を選び、
- 「名前を記録」にチェックを入れる
この設定を行うだけで、Forms上で「誰が回答したか」に関する情報が記録されます。
集計結果として生成されるエクセル
アンケート結果は、エクセルとして集計されます。
▲ 上記の通り、氏名とメールが記録されます。
メールはユーザープリンシパル名(UPN)でMicrosoft365にログインするIDとなります。会社によって、Exchange連携しているとこれがいつも使っているメールアドレスではない可能性もあります。
え、この情報だけ?「部門」や「役職」は?ってなるかと思いますが、この後にPower Automateを使って情報を加えます。
MS Formsで回答者を特定・確認して一覧化する方法
アンケートの事後に回答者属性を調べる方法、アンケートをやりながら回答者属性を付加していく方法が考えられます。今回は、前者の事後に行う方法を紹介します。
もう一つのほうは、Teams連携なども加えて次の機会に投稿したいと思います。
以降は、多少なりともPowerAutomateに触れたことある人向けの書き方をするので、基礎から把握したい人は次のような書籍でトレーニングするのがよいかと思います。
集計結果のエクセルから回答者属性を付け加える
まずは、Formsが自動生成するエクセルを使います。アンケート収集が終わったら、Formsからダウンロードしましょう。
こちらでは、元のエクセルを使って回答者属性を加えます。
- ステップ1集計済みエクセルを所定の場所へ格納する
- ステップ2フローを作成する(Power Automate)
- ステップ3フローを実行する(Power Automate)
- ステップ4更新されたエクセルを確認する
ステップ1 集計済みエクセルを所定の場所へ格納する
Formsのアンケート収集が終わったら、アプリが生成するエクセルファイルをダウンロードします。
▲ Formsの管理ページから該当のアンケートを開いて、「応答」→「Excelで開く」をクリックします。これでローカルにファイルがダウンロードされます。
ここからはオンライン上の領域に格納しますが、その前に一手間加えます。
▲ エクセルファイルを開きます。通常は、画像のように表が 装飾 されています。
この装飾には、テーブル化 という意味があります。表が「明示的にテーブル化されている」=「行と列がはっきりした構造化データ」と考えられ、Power Automateでも表を扱いやすくなります。
▲ 「テーブル」タブから右端の「テーブル名」を確認します。
テーブル化されていれば、何らかの名称(通常は「テーブル<番号>」の形式)が入っています。「テーブル1」だとわかりづらいので「アンケート結果」と名前を付け直します。
▲ また、一部列名称の変更と追加の列を加えます。追加列は列名称のみ入れて中身は空でOKです。
- 列名称の変更
- メール → ユーザープリンシパル名
- 列の追加
- 部署
- 役職
- 姓
- 名
- 表示名
- メールアドレス
▲ 編集を終えたらファイルを保存し、オンライン上の領域に格納します。ここではSharepointドキュメントライブラリに格納しました。
ステップ2 フローを作成する(Power Automate)
さて、フローを作成します。
トリガーは、ボタンフローとしています。
トリガーの定義(「手動でフローをトリガーします」)
フローは、ドキュメントライブラリ上でファイルに対して実行します。ファイル名や保存場所はあらかじめ決めておきます。
▲ トリガーとして「手動でフローをトリガーします」を選びます。特に設定は必要ありません。
エクセルデータを取得する
Excelアクション「表内に存在する行を一覧表示」を選んでデータを取得します。
- 場所:「サイトのアドレス」を指定
- ドキュメントライブラリ:ライブラリ名を指定
- ファイル:対象のファイルを指定する
- テーブル名:「アンケート結果」を入れる
行ごとに読み込み、回答者属性を加えていく
前のアクションでエクセルを読み込んだら、行単位にループ処理していきます。
▲ 「コントロール」から「Apply to each」を選び、前のアクション「表内に存在する行を一覧表示」から取得できる動的コンテンツ「value(アイテムの一覧)」を指定します。
回答者属性を取得する
「Office365 Users」から「ユーザープロフィールの取得(V2)」を選んで、前のアクション「表内に存在する行を一覧表示」から取得できる動的コンテンツ「ユーザー プリンシパル名」を指定します。
行を更新する
最後に行を更新します。
「ユーザープロフィールの取得(V2)」から取得した動的アクションを使って行を更新します。
処理の作成はこれでおしまいです。ファイル名を毎回指定するというのは、汎用性に欠けるような気がしますが、Formsのアンケートも毎回異なるでしょうし、まぁこれでいいでしょう。
ステップ3 処理を実行する(Power Automate)
フローが完成したら処理を実行します。30行ほどのデータでちょうど30秒くらいでした。
ステップ4 更新されたエクセルを確認する
エクセルが格納されたドキュメントライブラリを開いて、ファイル更新結果を確認します。
ちゃんと回答者属性が付け加えられました。
こんなときは?
- Q部署や役職が表示されない
- A
大きな会社であれば、Azure ADなどで人事情報が管理されているかと思います。そうでない場合は、管理者が管理センターで登録していることが考えられます。
- Qすべてのユーザーが回答可能なケースで回答者の情報を集めたい。
- A
回答者の属性は「ユーザープロフィールの取得(V2)」を使って、ユーザープリンシパル名で調べています。Formsの入力欄にこの値をいれてもらうなどの運用が考えられます。
- Qほかにはどんな回答者属性が付け加えられるの?
- A
APIの「GraphUser_V1」を参考にしてください。あるいはフロー実行後の処理結果(「ユーザープロフィールの取得(V2)」の出力結果)を確認してください。
まとめ
Formsアンケートで回答者の氏名や所属を特定して一覧化する方法 について記事投稿しました。
後は取得した回答者属性とそれぞれの設問を掛け合わせていけば、アンケート結果として充実した情報が得られることでしょう。