Microsoft Forms の回答は、Power Automate(パワーオートメイト)で受け取ると、届いた瞬間に SharePoint リストやExcelの表に1行ずつたまり、担当者には Teams とメールで知らせが飛び、回答した人には受付のメールが返るようになります。この記事では、社員15名ほどの「サンプル工務店」が現場監督に毎週出してもらう「現場の安全点検」フォームを例に、受け取り・ためる・知らせる・返信するを作る順に書きます。使うのは Microsoft 365 Business Standard に含まれる Power Automate と標準コネクタだけです。後半では、社外のお客さまに答えてもらう「完成見学会の申込」フォームの扱いも書きます。
この記事の内容
先に決めること
回答をどこにためるか
Formsの回答は、Forms の画面の「応答」タブでも見られます。それでも Power Automate で別の場所にためるのは、回答を「仕事の台帳」として使いたいからです。ため先は次のように選びます。
| ため先 | 向いている場面 |
|---|---|
| SharePoint リスト | 回答ごとに状態(未確認・対応中・完了)を付けて追いかける。複数人が同時に書き換える |
| Excel の表 | 回答を数えて集計表やグラフにする。書き換える人は少ない |
| どちらも不要 | 回答を眺めるだけ。Forms の「応答」タブと「Excelで開く」で足りる |
安全点検は「指摘があった現場を、直るまで追いかける」ので、サンプル工務店は SharePoint リストにためます。Excel にためる形は、Power AutomateでExcelを自動化:表に行を足す・転記する・集計を送る、で書いています。
誰が答えるか
フォームの設定で「回答を受け付ける人」を選びます。社内の人だけにするか、社外の人も答えられるようにするかで、使える質問と取れる情報が変わります。
| 比べること | 社内の人だけ | 社外の人も(すべてのユーザー) |
|---|---|---|
| 回答者の名前・メール | 自動で記録できる | 取れない。メールの質問を置く |
| ファイルのアップロードの質問 | 使える | 使えない |
| サインイン | 要る | 要らない |
| いたずら・迷惑な回答 | ほぼない | ありうる |
現場の安全点検は社内の現場監督だけが答えるので、「自分の組織内のユーザーのみが回答可能」にします。
フォームの持ち主
フォームを個人で作ると、その人のアカウントに属します。退職してアカウントが消えるとフォームも使えなくなります。会社で長く使うフォームは、Teams の「工事」チームのグループのフォームとして作るか、共通の管理用アカウントで作ります。グループのフォームは Power Automate での選び方が少し違うので、あとで書きます。
Formsとフローでできることの一覧
Microsoft Forms コネクタにあるのは、トリガー1つとアクション2つだけです。
| 種類 | 名前 | 使いどころ |
|---|---|---|
| トリガー | 「新しい応答が送信されたとき」 | 回答が送られた瞬間にフローを動かす |
| アクション | 「応答の詳細を取得する」 | 回答の中身(各質問の答え)を取り出す |
| アクション | 「フォームの詳細を取得する」 | フォームのタイトルや状態を取る |
トリガーが渡すのは「応答 ID」だけで、答えの中身は入っていません。必ず「応答の詳細を取得する」をすぐ後ろに置き、応答 ID を渡して中身を取り出します。コネクタは職場や学校のアカウントでしか動かず、個人の Microsoft アカウントで作ったフォームには使えません。
この記事で組み合わせるアクションは次のとおりです。
| やること | コネクタ | アクション |
|---|---|---|
| リストにためる | SharePoint | 「項目を作成する」 |
| Excelにためる | Excel Online (Business) | 「テーブルに行を追加する」 |
| Teamsに知らせる | Microsoft Teams | 「チャットまたはチャネルでメッセージを投稿する」 |
| 担当にメンションする | Microsoft Teams | 「ユーザーの@mention トークンを取得する」 |
| 担当にメールする | Office 365 Outlook | 「メールを送信する (V2)」 |
| 代表アドレスから返信する | Office 365 Outlook | 「共有メールボックスからメールを送信する (V2)」 |
現場の安全点検フォームとリスト
フォームの質問と、ため先の SharePoint リスト「安全点検記録」(「工事案件」サイトに作る)の列を先にそろえておきます。質問と列が1対1になっていると、フローの設定が迷いません。
| フォームの質問 | 質問の種類 | リストの列 | 列の種類 |
|---|---|---|---|
| 現場名 | 選択肢(1つ) | 現場名 | 1行テキスト |
| 点検日 | 日付 | 点検日 | 日付と時刻 |
| 点検した項目 | 選択肢(複数) | 点検項目 | 選択肢(複数選択を許可) |
| 指摘はありましたか | 選択肢(はい・いいえ) | 指摘 | はい/いいえ |
| 指摘の内容 | テキスト(長い回答) | 指摘内容 | 複数行テキスト |
| 写真 | ファイルのアップロード | 写真 | ハイパーリンク |
| なし(自動で記録) | 回答者 | 点検者 | 1行テキスト |
| なし | なし | 状態 | 選択肢(未確認・対応中・完了) |

手順1:回答をSharePoint リストにためる
- Power Automate の左の「マイ フロー」→「新しいフロー」→「自動化したクラウド フロー」を選ぶ
- フロー名に「安全点検をリストへ」と入れる
- トリガーに Microsoft Forms の「新しい応答が送信されたとき」を選び、「作成」を押す
- 「フォーム ID」で「現場の安全点検」を選ぶ
- 「+」から Microsoft Forms の「応答の詳細を取得する」を足す
- 「フォーム ID」に同じフォームを選び、「応答 ID」にトリガーの「応答 ID」を入れる
- 「+」から SharePoint の「項目を作成する」を足す
- 「サイト アドレス」で「工事案件」、「リスト名」で「安全点検記録」を選ぶ
- 各列に「応答の詳細を取得する」の答えを入れる(下の表)
- 「状態」に
未確認を選ぶ - 「保存」を押し、「テスト」→「手動」を選んでから、Forms で試しに1件答える

9で入れる値は次のとおりです。
| 列 | 入れる値 |
|---|---|
| タイトル | 現場名と点検日の答えを、間に半角スペースを入れて並べる |
| 現場名・指摘内容 | 同じ名前の質問の答え |
| 点検日 | 「点検日」の答え(yyyy-MM-dd の文字で届く) |
| 指摘 | 式 equals(答え, 'はい') で true/false にする |
| 点検者 | 「応答者のメール」 |
| 点検項目・写真 | 下の「複数選択」「ファイルのアップロード」の節で作った値 |

複数選択の答えを扱う
複数選択の質問の答えは、実際の出力を見ると ["足場・手すり","開口部の養生"] のような、配列の形をした文字で届きます。そのままメールに入れると角かっこが残るので、用途に合わせて直します。
文に入れるときは json() で配列に戻してから join() でつなぎます。rxxxxxxxx の部分は、動的なコンテンツで答えを入れたときに式に出てくる質問のキーです。
join(json(outputs('応答の詳細を取得する')?['body/rxxxxxxxx']), '、')
SharePoint の複数選択の列に入れるときは、「選択」アクションで1つずつの形に直します。
- 「+」からデータ操作の「選択」を足す
- 「差出人」(From)に式
json(outputs('応答の詳細を取得する')?['body/rxxxxxxxx'])を入れる - 「マップ」をテキストのモードに切り替え、式
item()を入れる - 「項目を作成する」の「点検項目」を配列全体の入力に切り替え、「選択」の「出力」を入れる
何も選ばれていない回答では答えが空になり、json('') で失敗します。必須の質問にしておくか、式を json(coalesce(outputs('応答の詳細を取得する')?['body/rxxxxxxxx'], '[]')) にしておきます。
ファイルのアップロードの答えを扱う
ファイルのアップロードの質問は、社内の人だけが答えられるフォームでしか使えません。回答者が上げたファイルは、フォームを作った人の OneDrive の「アプリ」→「Microsoft Forms」→フォーム名のフォルダ→質問のフォルダに保存されます。1つの質問で最大10ファイル、1ファイルの上限は10 MB・100 MB・1 GBから選べます。
フローに届く答えは、ファイル名とリンクなどが入った配列の形の文字です(実際の出力の例)。
[{"name":"足場_現場監督C.jpg","link":"https://sample-my.sharepoint.com/personal/xxxxxxxx/...","id":"xxxxxxxx","size":245760}]
リストの「写真」列にリンクを入れるだけなら、式 first(json(outputs('応答の詳細を取得する')?['body/rxxxxxxxx']))?['link'] で1枚目のリンクが取れます。ただし、このリンクの先はフォームを作った人の OneDrive なので、ほかの人は開けないことがあります。
写真を会社の場所に移しておきたいときは、ファイルを SharePoint にコピーします。
- 「それぞれに適用する」を足し、
json(...)で配列にした答えを入れる - 中に OneDrive for Business の「ファイル コンテンツの取得」を足し、「ファイル」に式
items('それぞれに適用する')?['id']を入れる - SharePoint の「ファイルを作成する」を足し、「工事案件」サイトの「写真」フォルダに、名前
items('それぞれに適用する')?['name']で作る
OneDrive for Business コネクタは、接続したアカウント自身の OneDrive しか触れません。2の接続は、フォームを作った人のアカウントで作ります。フォルダの名前やファイル名の付け方は、SharePoint・OneDriveのファイル自動化:添付の保存・PDF変換・フォルダの整理、で書いています。
Excelの表にためるときの違い
点検の件数を月ごとに数えたいだけなら、リストの代わりにExcelの表にためます。手順1の7〜10を次のように替えます。
- SharePoint の「工事案件」サイトに
安全点検集計.xlsxを作り、1行目に質問と同じ見出しを入れて「挿入」→「テーブル」でテーブルにし、名前を「点検」にする - フローの「項目を作成する」の代わりに、Excel Online (Business) の「テーブルに行を追加する」を足す
- 「場所」「ドキュメント ライブラリ」「ファイル」「テーブル」で、作ったブックと「点検」を選ぶ
- 各列に答えを入れる。複数選択は
joinでつないだ文字、写真はリンクの文字を入れる
Excelの表には複数選択の列やはい/いいえの列がないので、どれも文字として入ります。誰かがブックを開いたままにしていると書き込みに失敗することがあるので、フローが書くブックと人が見て集計するブックは分けておきます。Excelのテーブルが必須なことや、同時に開いているときの失敗は、Power AutomateでExcelを自動化:表に行を足す・転記する・集計を送る、で詳しく書いています。
手順2:担当にTeamsとメールで知らせる
指摘が「はい」の回答だけ、Teams の「工事」チャネルに出して、総務にメールを送ります。
- 「項目を作成する」の下に「条件」を足す
- 左に「指摘はありましたか」の答え、真ん中に「次の値に等しい」、右に
はいを入れる - 「True の場合」に Teams の「ユーザーの@mention トークンを取得する」を足し、「ユーザー」に「応答者のメール」を入れる
- 続けて「チャットまたはチャネルでメッセージを投稿する」を足す
- 「次のように投稿する」は「Flow ボット」、「投稿」はチャネルにして、チームは「工事」、チャネルは「一般」を選ぶ(欄の並びは画面によって少し違う)
- 「メッセージ」に下の文を入れる
- 続けて Office 365 Outlook の「メールを送信する (V2)」を足し、宛先に総務の担当、件名に
【安全点検】指摘あり:と現場名を入れる

6のメッセージは次のように組みます。
【安全点検】指摘あり
現場:(現場名)
点検日:(点検日)
内容:(指摘の内容)
点検者:(@mention トークン)
リスト:(項目を作成するの「リンク アイテム」)
Flow ボットとしての投稿は、接続ごとに300秒で25回までという上限があります。現場監督5人が同じ時間に一斉に出すくらいなら届きますが、ループの中で1件ずつ投稿するような作りにすると止まります。メンションの付け方や、カードで出す方法は、Power AutomateでTeamsに自動投稿:チャネルへの通知とメンションの付け方、で詳しく書いています。

回答者に受付のメールを返す
社内のフォームなら「応答者のメール」がそのまま宛先に使えます。現場監督に「受け付けました。指摘は総務が確認します」と返しておくと、出したかどうかの確認の電話が減ります。
- 条件の外(下)に「メールを送信する (V2)」を足す
- 「宛先」に「応答者のメール」、件名に
安全点検を受け付けましたを入れる - 本文に現場名・点検日・点検項目(
joinでつないだもの)を入れる
差出人を個人ではなく代表アドレスにしたいときは「共有メールボックスからメールを送信する (V2)」を使い、「元のメールボックス アドレス」に info@sample-koumuten.example を入れます。接続したアカウントに、その共有メールボックスから送る権限が必要です。
Formsの「Excelで開く」との違い
Forms には、回答をExcelで見る仕組みが最初からあります。Power Automate で表にためるのとは別物なので、違いを押さえて使い分けます。
| 比べること | Formsの「Excelで開く」 | Power Automate で表・リストにためる |
|---|---|---|
| 作る手間 | なし | フローを作る |
| 置き場所 | フォームの作り方で決まる(個人のフォームは OneDrive、グループのフォームは SharePoint) | 自分で決めた表・リスト |
| 新しい回答の反映 | 「Excelで開く」を押すか、ブックを開き直したとき | 回答のたびにすぐ |
| 列の並び・名前 | Forms が決める | 自分で決める |
| 回答ごとの状態・担当 | 持てない(列を足しても運用しにくい) | 持てる |
| 知らせ・返信 | できない | できる |
Forms で作ったフォームなら、「応答」タブの「Excelで開く」で、回答と同期するブックが OneDrive か SharePoint に自動で保存されます。回答を眺めて数えるだけなら、これで足ります。回答ごとに誰かが動く(確認・対応・返事)なら、Power Automate でリストにためる方を選びます。
両方を同時に使ってもかまいません。サンプル工務店では、安全点検の回答の全件は「Excelで開く」のブックで眺め、指摘ありの追いかけは「安全点検記録」リストで行っています。
応用:グループのフォーム・社外の人のフォーム
グループのフォームを選ぶ
Teams のチームや Microsoft 365 グループで作ったフォームは、トリガーの「フォーム ID」のドロップダウンに出てきません。フォーム ID を手で入れます。
- Forms でグループのフォームを編集画面で開く
- ブラウザのアドレス欄の URL から、
FormId=の後ろの部分だけをコピーする - Power Automate のトリガーの「フォーム ID」で「カスタム値の入力」を選び、貼り付ける
- 「応答の詳細を取得する」の「フォーム ID」にも同じ値を貼る

FormId= の前の部分や、& 以降まで一緒に貼るとフォームが見つからずにエラーになります。
社外の人に答えてもらう
「完成見学会の申込」は、ホームページやチラシから来るお客さまに答えてもらうので、「すべてのユーザーが回答可能」にします。このとき変わる点は次のとおりです。
- 回答者の名前とメールは記録されない。メールアドレスの質問を必須で置き、それを受付メールの宛先にする
- ファイルのアップロードの質問は使えない。図面や写真をもらうときは、受付メールで案内する
- 回答した人が本人かは分からない。受付メールは「申込を受け付けました」の事実だけにし、住所などの個人情報を本文に繰り返さない
- 受付メールは代表アドレス
info@sample-koumuten.exampleから「共有メールボックスからメールを送信する (V2)」で送る
ホームページの問い合わせフォームの代わりにするか
社外向けの Forms を、ホームページの問い合わせフォームの代わりにする会社もあります。判断の目安は次のとおりです。
| 当てはまること | 判断 |
|---|---|
| 見学会・イベントのように期間が決まった申込 | Forms で十分。終わったら回答の受付を止める |
| 毎日届く問い合わせ・見積依頼 | ホームページのフォームのまま。Forms の画面はホームページのデザインに合わせられない |
| 届いた問い合わせを社内で追いかけたい | どちらでも、届いたものを問い合わせ台帳リストにためるフローを作る |
| 広告の効果を測りたい | ホームページのフォーム。Forms では広告の計測タグを入れられない |
サンプル工務店は、ホームページの問い合わせはこれまでどおりメールで受け、見学会の申込だけ Forms にしています。どちらも最後は「問い合わせ台帳」リストに入る形にそろえています。
できないことと、その代わり
| できないこと | 代わりの手 |
|---|---|
| 回答の中身をトリガーだけで受け取る | 必ず「応答の詳細を取得する」を後ろに置く |
| 回答をあとから書き換えて流し直す | リストの項目を直す。Forms の回答は直さない |
| 過去の回答をまとめてリストに入れる | 「Excelで開く」のブックから、リストに一括で取り込む(初回だけ) |
| 社外の人からファイルを受け取る | 受付メールで案内し、メールに添付してもらう |
| 回答に応じて次の質問を変える以上の複雑な入力画面 | Power Apps で入力画面を作る |
| 個人の Microsoft アカウントのフォーム | 会社のアカウントで作り直す |
Forms は「質問に答えてもらう」ための道具で、入力した内容をあとから見直したり直したりする画面はありません。点検のたびに前回の内容を見ながら入力したい、のような使い方になったら、SharePoint リストの入力画面か Power Apps に移す時期です。
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| フォームがドロップダウンに出ない | グループのフォーム | アドレス欄の FormId= の後ろを手で入れる |
| フローが動かない | 個人の Microsoft アカウントで作ったフォーム | 会社のアカウントのフォームにする |
| 答えが動的なコンテンツに出てこない | 「応答の詳細を取得する」を置いていない/フォームを変えたあと再読み込みしていない | アクションを置く。質問を足したらアクションを開き直す |
| 複数選択の答えに角かっこが出る | 配列の形の文字で届く | json() で配列にして join() でつなぐ |
json の式で失敗する | 何も選ばれず答えが空 | 必須にするか coalesce(..., '[]') を挟む |
| 写真のリンクがほかの人に開けない | ファイルはフォームを作った人の OneDrive にある | SharePoint にコピーしてそちらのリンクを使う |
| 写真のコピーで「見つからない」になる | 別の人の接続で OneDrive を読んでいる | フォームを作った人の接続で「ファイル コンテンツの取得」を動かす |
| 「応答者のメール」が空 | 社外の人も答えられる設定 | メールアドレスの質問を置く |
| 点検日が1日ずれる | 日付と時刻の列にタイムゾーンなしで入れている | yyyy-MM-dd のまま入れ、列を日付のみにする |
| 同時実行の設定を戻せない(CannotDisableTriggerConcurrency) | トリガーの同時実行の制御は一度変えると元に戻せない | フローを書き出して定義から同時実行の部分を消し、取り込み直す |
| Teams の投稿が途中で止まる | Flow ボットの投稿は300秒に25回まで | ループの中で投稿せず、まとめて1回にする |
| フォームの持ち主が退職して止まった | 個人のフォームとその人の接続で動いていた | グループのフォームにし、接続を共通の管理用アカウントに替える |

次にやること
回答がたまり、知らせが飛ぶようになったら、ため先と知らせ方を整えます。
- SharePointリストとは:作り方と、Excelの台帳をリストに移す判断
- Power AutomateでExcelを自動化:表に行を足す・転記する・集計を送る
- Power AutomateでTeamsに自動投稿:チャネルへの通知とメンションの付け方
- Power AutomateでOutlookのメールを自動化:添付の保存・振り分け・定型メールの送信
安全点検で作った「受け取る→ためる→知らせる→返す」の4段は、社内アンケートや休暇の申請にもそのまま使えます。フォームを替えて、ため先のリストと知らせる先だけ差し替えれば、同じ形のフローが増やせます。