【10分で作成】Microsoft TeamsでForms投票、その結果をPower BIでリアル可視化

## はじめに
　Microsoft Teamsには、チーム内で、簡単にMicrosoft Formsの投票機能が呼び出せ、その結果が簡易的な棒グラフで同チーム内にリアルタイムに表示できます。また投票されたデータはMicrosoft Formsの管理機能で円グラフ、1件づつの回答結果、Excelでの回答一覧を取り出せます。
　こちらを、Power AutomateとPower BI Serviceを連携することにより、リアルタイムに好きなビジュアルで表示するようにします。

尚、当初は【1】の手順でTeams内で使えるクイック投票機能（FormsがTeamsの投稿時のアプリになっているもの）を使おうとしたのですが、うまくいかないことに気が付き、【1-2】【5】【6】の手順を追記しています。手順変更によって読みづらい部分もあるかと思いますが、失敗の経験、注意すべきことももシェアするということでご了承ください。

### ご注意
　本記事の作成者である私は、市民開発者（シチズン・ディベロッパー）であり、ところどころ技術的説明が雑な説明を含みます。ご了承いただき、より正しい説明は[Microsoft Docs](https://docs.microsoft.com/ja-jp/)、後記の参考にした有用なリソース等の関連箇所を参照ください。

#### 利用イメージ図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/94bb36a9-f2b8-29fa-8fc1-09952476ba29.png)
（左:Teams内のForms、真ん中:Power Automateの実行ステップ、右:Power BI Serivceでリアル表示）

※実際のデータ数はテストデータを含むため、異なります。

#### 利用環境の概要
　本資料は各サービスのライセンスに対応する機能の詳細等は割愛します。概要は以下のとおりです。
- Microsoft Teams（ビデオ会議、ビデオチャット等コラボ基盤。無料版ではない通常版。Microsoft 365の大半のライセンスに付属）
- Microsoft Forms（アンケート集計サービス。Microsoft 365の大半のライセンスに付属）
- Power Automate（アプリ、データ等の自動連携。Microsoft 365の大半のライセンスに付属）
- Power BI Service（Power BI Proにある1サービス。[Microsoft 365 E5に付属](https://www.microsoft.com/ja-jp/microsoft-365/compare-microsoft-365-enterprise-plans)他、[単体購入](https://powerbi.microsoft.com/ja-jp/pricing/)等に付属）
- 上記の各サービスは、同じMicrosoft 365の組織テナント内にあるものとする。

#### 概要図（データの流れと説明順）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/bfd8bfb9-4ef4-cca4-09c9-3260090af8db.png)


### 【1】（事後で見直しになった）投票フォームの作成（Microsoft Teams部分）

　**注意** この部分の方法を見直したものは後記の【1-2】にあります。**そちらの手順を採用してください。**

　Teamsアプリの投稿「その他のオプション」（・・・）からFormsを選択します。

![コメント 2020-04-26 155707.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/6e08e903-bfed-f5b0-4cda-dc9b151b7ee3.png)

　投稿を作成して..

![コメント 2020-04-26 155824.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/01fe7bd8-9f0b-a665-1a86-5a90654be232.png)


　送信すると、チームのチャネル内に投票とそのリアルタイム結果ボードができます。実際に投票を送信するとボードが更新されます。


![コメント 2020-04-26 160135.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/544b0971-cb0d-b417-99f5-d099f5639d4e.png)


### 【2】投票されたデータの確認（Microsoft Forms部分）

　[Microsoft 365ポータル](https://office.com/)からFormsを呼び出します。


![コメント 2020-04-26 161153.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/3e992233-679a-5d6d-3bbf-bbd35eeddce5.png)



　Teamsで作成した投票を選択し、「Responses」で結果が投票されていることがわかります。~~そして、上部のワーニングにあるように、この投票フォームはこれ以上編集できません。~~（(補足)このメッセージがでるのは【1】の場合のみ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/3a4d4e61-c9af-ebda-fe2a-d4d8a4a32c74.png)

　Excelで開くをクリックすると（Teamsの同じ組織テナント内の）ユーザーやメールアドレスも自動で取得されいることもわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/df02be65-c710-d359-11e0-b34c46569d28.png)

### 【3】可視化する受け側部分の作成（Power BI部分）

　[Microsoft 365ポータル](https://office.com/)からPower BI Serviceを呼び出します。


![コメント 2020-04-26 161241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/0de3fe57-da68-f59c-f653-3dd955ec2363.png)


マイワークスペースの「＋新規」から「ストリーミングデータセット」を選択します。

![コメント 2020-04-26 161409.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/ea09764e-8c5f-7c37-b32b-0ec505dab643.png)


APIを選択し[次へ]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/11e55f70-8396-3ca2-30b7-9c6e27c704fe.png)

「データセット名」、Formsから取得する項目を「ストリームからの値」を設定します。日時と数値は必須で設定し、その他は取得するものを入れます。履歴データの解析はオンにして、ストリーミングデータセットに加えてプッシュデータセットも受け取り、Power BI Service上でレポートを作成できるようにします。
![コメント 2020-04-26 162211.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/b2774255-8a46-97c1-5d0c-e65b9ce97822.png)

最終確認画面で完了を押すことで、ストリーミングデータセットの作成は完了です。

（補足）下部にあるテキスト部分（JSON形式）をPower Automateで利用する必要がある場合もありますが、以降の手順で進めた場合は不要でした。


![コメント 2020-04-26 162403.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/5fb6776b-bc3f-2f96-b11b-1988de352931.png)


作成したデータセットからレポートを作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/db100cd2-4422-eb45-2b12-64bd543e5867.png)

適当にカードや、テーブル等を配置しましょう。各ビジュアルの右上にあるピン留めし、リアルタイム表示するダッシュボードに留めます。

![コメント 2020-04-26 162906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/57118e6f-2c95-6450-275c-d82d56d67bc0.png)



レポートの保存は、適当なレポート名をつけて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/116e8469-102c-38d5-bf7b-9960b37b80ed.png)

ピン留めは新規か既存のダッシュボードへ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/06b4fe2e-d0cb-6858-3d70-5dc059e313a5.png)

モバイル用のレイアウトも作るか聞かれます。後でも設定できるので一旦ダッシュボードへ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/55ef9c05-9ee8-eb26-304d-7ba11252c1df.png)

これでダッシュボードも完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/9adf4377-45fb-54cc-ce0d-d1f2097dd797.png)

### 【4】データのつなぎ（Power Automate部分）

　[Microsoft 365ポータル](https://office.com/)からPower Automateを呼び出します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/0ee45e54-c550-4ab7-faaa-1ff5dd8f87d2.png)

　「作成」から「自動フロー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/259c903b-89b8-1953-4ac3-ed2487d8d323.png)

以下のようにFormsの新しい応答の送信からスタートして作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/0fbd42ae-13d3-4c8b-b4a8-c5d1d8289136.png)

フォームIDをセットして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/9f4e5d22-a68d-7840-4bff-a166a797a732.png)

新しいステップでFormsの「応答の詳細」を
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/efa45197-51c3-76c4-1c61-e997f80e5277.png)

応答IDをセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/517e91b8-962c-a8de-456a-476874dd8ff0.png)

現在の時刻を取得し、さらにタイムゾーンを変換します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/b44e8e49-d520-8895-9100-11039e2058de.png)

「Office 365ユーザー」から名前取得を行うため呼び出します。そして、Formsのメールアドレスを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/8ccef23a-4c0e-deca-227c-d9d8f6deb632.png)

「データセットに行を」でPower BIに関する設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/cf289b79-ba0f-2b0e-3633-60790309cc3d.png)

ワークスペースは「My Workspace」等【3】で選んだスペース、データセット、テーブルは「RealTimeData」をセットします。
すると、その他のテーブルの項目をセットする画面がでます。変換後の時間、Formsの各項目（応答通知のID、出欠の回答）、Office365から表示名とメールを設定し、**保存します**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/678ef5ca-258f-7077-4b69-b71bf9614e19.png)


### 一連の動作確認

　Formsに行き、右上の[Preview]を押し、テストで1件投稿します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/32f913a2-12ba-e0c7-62a7-744b78b9f1ef.png)

　Power Automateは左上の[←]で前の画面に戻り、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/8a938df2-4832-51ab-4e9c-aea973e07acd.png)
　下の実行が、成功しているか見ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/91606e8f-2e1d-0869-8f88-989c931025be.png)
　開始の下の日付をクリックすると詳細の実行状況が見られます。

　Power BIの項目を見ると、指定した項目が送られていることがわかります。もしエラーになったら、エラーの内容を確認し、右上の編集から一部修正しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/3f28c9f4-ff0a-16e9-bf09-c977bb8bf00f.png)

　Poer BIレポートに値は入ってるでしょうか？更新がなければ、その他のオプション（・・・）から更新を。すると表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/5cf35480-4773-d391-c04c-1f35b612ea3b.png)

ところどころ表示が変なようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d1b666c5-9738-3b98-351c-0f14952aaca7.png)


これらを治します。編集にして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/1001355f-6271-2127-8eca-47a0be311862.png)

カードは一意なカウントに、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/e60e0af5-7853-994c-2126-bf7487f14025.png)

テーブルは必要な項目のみに。投稿時間の新しいのが上にくるようにするとよいでしょう。
あらためて、ダッシュボードへのピン留めもし直します。レポートの保存を忘れないように。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/1266d474-1d21-07fa-e8d5-1f3163d80190.png)

ダッシュボードを画面に出したまま、FormsからテストでPreviewから投稿してみましょう。

1件追加で投稿されれば、OKですね！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/99202c92-6946-db8c-f372-ac9eb6397991.png)

「データについて質問する」は不要なので消しましょう。ダッシュボードのその他のオプション（・・・）から設定に進み、Q&Aをオフです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/b48b9569-bc56-e8e8-90d2-edd27627a4eb.png)

その他、同様にレポートでビジュアルの追加等を行い、ピン留め等を繰り返しビジュアルを整えましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/776e13ba-843e-1589-3970-96475c117201.png)

以上で終了です。自動的に画面が動くのはダッシュボード上で見られます。

### Power BI Mobile（アプリ）でも自動更新
　ピン留めした後にででる案内等から「Phoneビューの編集」を行うと、Power BI Mobile（アプリ）で表示される見栄えを調整できます。右上の切り替えから「Webビュー」のダッシュボードに戻れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/e070673b-86da-eead-f916-e409566ae600.png)

　モバイルアプリのダッシュボードも自動更新されます。
![IMG_6525.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/afdeca2c-4fa2-3238-47bd-47bbabbac24b.png)

## データのメンテナンス（クリア）
　プッシュデータセット（レポートで表示しているデータ）は、データセットの編集から「履歴データの解析」をオフにして保存すると消えます。再度アンケートを取得するときは、オンにして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/c904b55b-9553-a5af-a2d2-1465fe73aedf.png)
　ストリーミングデータセットは、1時間経過で自動的にクリアされます。
　Forms側のデータのクリアも行いたいときは、[Responses]から結果を表示して回答の削除を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/73034446-d2b9-ef7e-4c9e-3b99b519586a.png)

## （振り返り）ここにきて、致命的なミスに気がつく...
 データをクリアして、あらためてTeamsからテストしたのですが、Formsにデータ蓄積されるものの、Power Automateからは進みません。
どうやらTeamsのメッセージ欄からアンケートを起こす、クイック投票では、Power Automateから先は動かないようです（原因不明）。
 またもし動いたとしても、投票が投稿された後、チームユーザーはすぐに回答する可能性が高いです。そうなると【2】～【4】の準備ができていないので、うまくいかずでした...（浅はかでした）。というわけで、改良版の【1-2】を次に書きます。

### 【1-2】（改良版）投票フォームの作成（Microsoft Forms）

 Formsから新しいフォームを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/544ff5d3-8d4f-affd-813c-2770efc6c4a9.png)

　過去の質問で「類似あったね」とレコメンドしてくれましたw
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/f6ddcb14-9684-437a-96f9-3aae38a82941.png)

####（補足）【4】「データのつなぎ（Power Automate部分）」のForm指定の微修正

　【1-2】から【4】にいけば、【4】自体は修正する必要がありません。【1】を実施していた私は、Formsの該当フォームを結びつけなおしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/e8057acc-2233-c815-fb45-e9eb1b407e2d.png)

こちらも修正して保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/6615b5ce-9750-d8d7-7933-d61f7160111a.png)

Power BIも修正要です。そして**保存を忘れずに**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/c9a32511-2d2f-f35e-1b05-77e1f8fbc3b7.png)

次にFormsからPower BIまで動作確認を実施します。

## 【5】投票フォームをリリース（Microsoft Teams部分）

TeamsのタグにFormsを貼って、ユーザーに使ってもらいましょう。タブから...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/a0529b58-492b-fe48-86bb-0d4bcf7ed122.png)

Formsを選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/8b8fca02-4dbc-9c87-31f5-5b805f1bb47d.png)

作成したフォームを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d591eacf-5d93-4e62-02de-34cb0e18c085.png)

タブのタイトルが長いときは短く修正を。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/92f5a16d-b41c-29d5-4f4a-877f259100b9.png)


## 【6】投票結果の見える化（Microsoft Teams部）

　投稿結果は、Power BIのレポートをタブに呼び出しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d77d8d54-f1b2-fdaa-b2ce-3c1b8d272260.png)

　ダッシュボードは呼び出せない模様。同様のものを呼び出したい場合、My Workspace以外のワークスペースにしてアプリにするという方法でしょうか..

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/cbafa744-e013-35ba-8a07-52c13af1062c.png)

　結果がでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/14552a64-889e-9396-c531-99734e9ae6d4.png)

　補足ですが、Formsの回答をタブに追加することもできますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d5128dc7-45aa-47ce-0a71-bf15e2dc9502.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419691/d584a1d7-cc54-60ba-d0c8-7d12e2a8cd9f.png)


### Formsの入力とPower BIの見える化に関するさらなる応用等

　Formsで蓄積されるデータのPower BIの可視化についての応用例には以下もご参照ください。

- Formsで複数の回答をOKにした場合、Power BI Desktopを使ったデータ整理については、@yugoes1021 さんの[[Power BI Tips] 列の分割には横と縦がある!? ～Power BI でアンケートを分析する場合に複数選択可能な値に困った時の対処法～ - Qiita](https://qiita.com/yugoes1021/items/09c0b9af44039308a936)の参照を。
- [PowerBIのスマホ用Vizについて考えてみた - Qiita](https://qiita.com/ishiayaya/items/cb25e52d2d346101a991)

### 参考にした有用なリソース等
- @yugoes1021 さん [Power BI で動くグラフを表示するには？～ストリーミングデータセット～ - Qiita](https://qiita.com/yugoes1021/items/1b87a7205e6c659a9604#%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%AF)
- @yugoes1021 さん [アンケートを即可視化！～MS Forms ⇒ MS Flow ⇒ Power BI～](https://www.slideshare.net/yugoes1021/ms-forms-ms-flow-power-bi-83167435)
- @yugoes1021 さん [開発者におくる Power BI を使う時に考えるべきアーキテクチャ ～ データを溜めるのは誰だ？ ～](https://www.slideshare.net/yugoes1021/power-bi-98674803) 
- [Microsoft Teams で投票を作成する - Office サポート](https://support.office.com/ja-jp/article/microsoft-teams-%E3%81%A7%E6%8A%95%E7%A5%A8%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-a3f9112c-01e1-4ee4-bd88-25e4e243b80b)

@yugoes1021 さんばっかり!w はい、本記事はこれまで[Power BI勉強会](https://powerbi.connpass.com/)やQiita等で教えてもらったことが軸です。Power BIについて本質的なことを身につけていくには、[Microsoft MVP](https://mvp.microsoft.com/ja-jp/)のひとり、@yugoes1021 さんのアウトプットから学ぶことをおすすめします。

- [Microsoft Teams で投票を作成する - Office サポート](https://support.office.com/ja-jp/article/microsoft-teams-%E3%81%A7%E6%8A%95%E7%A5%A8%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-a3f9112c-01e1-4ee4-bd88-25e4e243b80b)
- [Power BI のリアルタイム ストリーミング - Power BI | Microsoft Docs](https://docs.microsoft.com/ja-jp/power-bi/service-real-time-streaming)

## おわりに
　ストリーミングデータセットを利用したリアルタイムアンケートの仕組みについて、実施するたびにどこか肝になることを忘れる、抜けるので、Teamsの中でシンプルなFormを理由にまとめ直してみました。リアルアンケートの少しかっこいい可視化をやってみたいな、という方は是非トライしてみてくださーい。
　「（振り返り）ここにきて、致命的なミスに気がつく...」のところは、大きな見落としでした。反省しています。ただ、経験でいろいろわかりまるものですね。手を動かすこと大事です。