結論から言うと、Microsoft Formsには、回答者が「行を追加」して同じ入力欄を任意件数増やす繰り返しセクションはありません。固定した最大件数までなら前方向の分岐、定番項目なら複数選択、件数だけ可変なら長文の1行1項目入力が現実的です。送信後に1件1行へ整えるならPower AutomateとMicrosoft Lists、入力画面自体に動的な行追加が必要ならPower Appsを選びます。
ただし、Power AutomateのMicrosoft Formsコネクタは組織アカウントでのみ動作し、個人用Microsoftアカウント(Outlook.com、Hotmail、Live)では利用できません。個人アカウントの利用者はForms単体で完結する方法1〜3を選ぶか、管理者が承認した職場または学校テナントへ仕組みを移してから方法4・5を検討します。Microsoft ListsとPower Appsも組織テナント、利用者ごとの適切なライセンス、管理者のデータ損失防止(DLP)ポリシーによる許可が前提です。
Formsの「セクション」は作成者が事前に配置する静的なページです。セクションを複製できるのも編集時で、回答者が増やす機能ではありません。また分岐は後ろの質問またはフォーム末尾へだけ進め、前の質問へ戻るループは作れません。この制約を前提に設計すると、回答途中で行き止まりになるフォームを避けられます。
要件別の選び方
| 要件 | 推奨方式 | 長所 | 注意点 |
|---|---|---|---|
| 最大3〜5件など上限を決められる | 明細質問を複製し、前方向に分岐 | Forms内で完結し、項目別に列が分かれる | 上限を超えられず、質問数と保守が増える |
| 定番品から複数を選ぶ | ChoiceのMultiple answersとOther | 入力が速く、標準集計がしやすい | 品目ごとの数量・単価を持たせにくい |
| 自由項目を任意件数集める | Long answerへ1行1項目 | フォーム作成が最小でスマホにも向く | 表記ゆれと送信後の分割が必要 |
| 回答後に1品目1行へ保存する | Forms + Power Automate + Lists | 集計・承認・検索へつなげやすい | 組織アカウントと組織テナントが必須。再試行時の重複、権限、ライセンス、管理者のDLP許可を確認 |
| 回答者が行を追加・削除し、各行に複数項目を入力 | Power AppsのCollectionとGallery | 動的UIと行ごとの検証を実装できる | Formsではなく組織テナント上の別アプリ。利用者ライセンス、環境権限、管理者のDLP許可が必要 |
Formsでできること・できないこと
| 機能 | 対応 | 実際の動作 |
|---|---|---|
| Section | 対応 | 質問を複数ページに整理する静的な区切り |
| Duplicate section | 対応 | 作成者が編集画面で質問セットを複製 |
| Branching | 対応 | 回答に応じて後続質問・後続セクション・フォーム末尾へ移動 |
| 前の質問へ戻る分岐 | 非対応 | 繰り返しループは作れない |
| 回答者の「行を追加」ボタン | 非対応 | 同じ入力欄を動的に増やせない |
| Choiceの複数回答 | 対応 | 既知の選択肢を複数選択できる |
| TextのLong answer | 対応 | 複数行の文字列を1つの回答として保存 |
Microsoftの現行上限では、1フォーム/クイズは最大200質問、1質問への回答は最大4,000文字です。固定上限方式で「品名・数量・単位・備考」を5件分作ると、それだけで20質問近くになります。上限内でも、設問変更とExcel列の保守負担を考えて方式を選びます。
方法1:最大5件を前方向の分岐で入力させる
「最初に入力件数を選ばせ、選択数だけ同じ質問へ飛ばす」設計は、分岐先の順序が複雑になりがちです。Formsは前の質問へ戻れないため、各明細の後に「次を追加しますか」を置くチェーンが安全です。
質問を並べる順序
- 「品名 1」「数量 1」を作ります。最低1件必要なら必須にします。
- Choiceで「2件目を入力しますか」を作り、選択肢を「はい」「いいえ」にします。
- 続けて「品名 2」「数量 2」「3件目を入力しますか」を作ります。
- 同じ並びで「品名 3」「数量 3」「4件目を入力しますか」、「品名 4」「数量 4」「5件目を入力しますか」、「品名 5」「数量 5」を作ります。
- 各「追加しますか」の分岐で、「はい」は直後の品名、「いいえ」は「フォームの末尾」へ設定します。
- 質問を並べ替えた後は、分岐先をすべて再確認します。分岐は後ろの質問にだけ設定します。
公開前のテスト
- PreviewのComputerとMobileで、1件から5件まで全経路を送信する。
- 「いいえ」で未表示の後続必須質問に阻まれず送信できるか確認する。
- 回答をExcelで開き、品名1〜5、数量1〜5が想定列へ入るか確認する。
- 上限を説明文に明記し、6件以上をどう扱うか決める。備考へ押し込むより、上限が常態化するなら別方式へ移行する。
数量や単価など、1行に複数の属性があり、最大件数が小さい用途に向きます。最大20件のようなフォームは回答も保守も長くなるため、Power Appsまたは専用の入力画面を検討します。
方法2:定番項目は複数選択にする
必要な備品、参加希望、利用サービスなど、候補が決まっている場合はChoice質問を使います。
- 「Add new」でChoice質問を追加します。
- よく選ばれる項目を、意味が重ならない名称で登録します。
- 「Multiple answers」を有効にします。
- 候補外を受ける必要があれば「Add ‘Other’ option」を追加します。
- Previewで複数選択、Otherの自由記述、必須設定を確認します。
この方式は選択した品目一覧を集める用途には強い一方、「マウス2個、ケーブル3本」のように品目ごとの数量を結び付けられません。数量が必要なら固定上限方式かPower Appsを選びます。またOtherが増え続ける場合は、定期的に内容を確認し、頻出語を正式な選択肢へ追加します。
方法3:長文へ1行1項目で入力させる
項目数の上限を決めにくく、名称だけを集めればよい場合は、Text質問をLong answerにします。入力規則は「改行またはコンマ」ではなく、1行1項目に固定すると後処理が安定します。
質問文の例は次のとおりです。
必要な物を1行に1つずつ入力してください。項目の途中で改行しないでください。
例:
ノートPC
USB-C電源アダプター
HDMIケーブル 2m
「品名 数量」の自由文を後で完全に分解するのは難しいため、数量集計が重要ならこの方式を使わない方が安全です。説明文に例を入れ、Previewをスマートフォン表示でも確認します。
Power Automateへ進む前にアカウントと公開範囲を判定する
| 設定・サービス | 利用条件 | 運用上の意味 |
|---|---|---|
| Anyone can respond | 回答者のサインインは不要。個人アカウントまたは職場・学校アカウントで作成したフォームから公開できる | 組織内外の人が回答でき、受け取ったリンクを他者へ転送できる。組織テナントでは外部回答が管理者ポリシーで制限される場合がある |
| Only people in my organization can respond | 対象のMicrosoft 365職場・学校アカウントが必要 | 同じ組織へサインインした利用者だけが回答する。個人用Outlook.com、Hotmail、Liveアカウントにはこの組織限定設定はない |
| Specific people in my organization can respond | 対象のMicrosoft 365職場・学校アカウントが必要 | 指定した組織内の人またはグループだけに絞る。選択肢の表示や外部共有可否はテナントポリシーでさらに制限され得る |
| Microsoft Formsコネクタ | Power Automateへ接続する組織アカウントが必須 | 個人用MicrosoftアカウントではWhen a new response is submittedもGet response detailsも使用できない |
| Microsoft Lists / Power Apps | 管理者が承認した組織テナント、必要なライセンス、環境・サイト権限、DLP許可が必須 | 個人利用からそのまま移行できる機能ではない。保存先と接続の組み合わせを管理者が承認してから構築する |
Microsoft Forms自体は個人用Microsoftアカウントでも利用できますが、Formsコネクタの対象範囲は別です。個人アカウントでフォームを作った読者は、コネクタへサインインし直せば済むとは限りません。元フォーム、保存先、フロー所有者を管理者承認済みの職場・学校テナントへ置く設計が必要です。組織テナントを用意できない場合は、固定上限、複数選択、長文入力というForms内の方法に留めます。
方法4:Power Automateで1行1項目をListsへ保存する
Power AutomateはFormsの入力画面を変えません。送信された1つの長文回答を分割し、Microsoft Listsの1項目として保存する後処理です。この手順を始められるのは、Microsoft Formsコネクタへ組織アカウントで接続でき、管理者がFormsとSharePointの組み合わせを許可した職場・学校テナントです。個人用Outlook.com、Hotmail、Liveアカウントではコネクタが動作しないため、先に組織テナントへ移行せずに次のフローを作ることはできません。条件を満たしたら保存先リストを作ります。
| 列名 | 型 | 目的 |
|---|---|---|
| Title | 1行テキスト | 明細の名称 |
| ResponseId | 1行テキスト | 元のForms回答との対応 |
| Responder | 1行テキストまたはユーザー | 回答者。匿名フォームでは空欄になり得る |
| SubmittedAt | 日時 | 受付時刻 |
| FormName | 1行テキスト | 複数フォームを扱う場合の識別 |
| ProcessStatus | 選択肢 | 受付、確認済み、差戻しなど |
フローの作成手順
- Power Automateで「自動化したクラウド フロー」を作ります。
- Microsoft FormsのWhen a new response is submittedを選び、対象Form Idを指定します。非推奨と表示される旧トリガーは選びません。
- Get response detailsを追加し、同じForm IdとトリガーのResponse Idを指定します。
- Data OperationsのComposeを追加し、アクション名を英字で
ResponseTextに変更します。入力にはGet response detailsの長文回答を選びます。 - もう1つComposeを追加し、アクション名を
ItemsArrayにします。Expressionへ次の式を入れます。
split(
replace(outputs('ResponseText'), decodeUriComponent('%0D'), ''),
decodeUriComponent('%0A')
)
この式はWindows形式の改行CRLFからCRを除き、LFで配列へ分割します。\nという文字を直接書いてもPower Automate式では改行にならないため、decodeUriComponent('%0A')を使います。
- ControlのApply to eachを追加し、ItemsArrayのOutputsを入力します。
- ループ内にConditionを置き、Expressionを
not(empty(trim(item())))にします。 - true側へSharePointのCreate itemを追加し、対象サイトとリストを選びます。
- Titleへ
trim(item())、ResponseIdへトリガーのResponse Id、その他の列へ回答者・時刻を設定します。false側は何もせず空行を捨てます。 - フローをテストし、CRLF、LF、先頭末尾空白、空行、同名項目、4,000文字付近を確認します。
重複と途中失敗への備え
単純なCreate itemループは、途中で失敗してフローを再実行したとき、すでに作成済みの行を重複登録する可能性があります。少数の非重要業務ならResponseIdで重複を確認できますが、購買・申請・請求のように重複を許容できない場合は、次の設計を追加します。
- 親回答リストと明細リストを分け、親にResponseIdと処理状態を持たせる。
- フロー開始時に同じResponseIdが「完了」なら処理を終了する。
- 明細順を一意キーへ含め、同じ処理単位を二重作成しない。
- 失敗時は親を「要確認」にし、自動的な全削除や無条件再実行を行わない。
- 本番前にフロー履歴から失敗位置と再試行時の動作を確認する。
方法5:動的な行追加が必須ならPower Appsを使う
品名、数量、単位、希望日を行ごとに入力し、回答者が追加・削除したい場合はPower Appsのキャンバスアプリが適します。これは個人用Formsへ部品を追加する方法ではなく、管理者が承認した組織テナントのPower Platform環境に別アプリを作る方法です。作成者と全利用者のライセンス、環境とListsまたはDataverseへの権限、使用するコネクタのDLP許可を先に確認します。条件を満たした環境でCollectionへ入力中の行を保持し、Galleryで繰り返し表示します。
最小構成の式
画面のOnVisibleで最初の1行を作ります。
ClearCollect(
LineItems,
{LineId: GUID(), ItemName: "", Quantity: 1}
)
追加ボタンのOnSelectは次の式です。
Collect(
LineItems,
{LineId: GUID(), ItemName: "", Quantity: 1}
)
GalleryのItemsをLineItemsにし、品名入力欄のOnChangeでCollectionを更新します。
Patch(
LineItems,
ThisItem,
{ItemName: Self.Text}
)
削除アイコンは最低1行を残すようにします。
If(
CountRows(LineItems) > 1,
Remove(LineItems, ThisItem)
)
保存時は空欄、数量範囲、同一品目、保存先権限を検証してからListsまたはDataverseへ書き込みます。Collectionはアプリ内の一時データであり、画面に表示できたことと永続保存できたことは別です。保存失敗時に入力行を消さず、再送または問い合わせへ進める画面を用意します。
権限・公開範囲・運用の確認
- 作成者アカウント:個人用Microsoftアカウントか、管理者が承認した職場・学校アカウントかを最初に確認します。個人用アカウントではFormsコネクタを使用しません。
- 回答範囲:Anyone can respondはサインイン不要の外部回答を含みます。Only people in my organizationとSpecific people in my organizationは対象の職場・学校アカウントだけの設定で、表示可否や外部共有はテナントポリシーの制限を受けます。
- 保存先:Listsは組織テナントのSharePoint上にあります。回答者へ直接閲覧権限を与えるか、フロー接続所有者だけが書き込むかを管理者と確認し、最小権限にします。
- DLP:Forms、SharePoint、Power Apps、Dataverse、外部コネクタの組み合わせがPower Platform管理者のデータポリシーで許可されるまで、本番フローやアプリを公開しません。
- ライセンスと環境:作成者と利用者に必要なPower AutomateまたはPower Appsライセンスがあり、対象環境を利用できるか確認します。PremiumコネクタやDataverseを使う場合は追加条件を個別に確認します。
- 個人情報:収集目的、閲覧者、保持期間、削除手順を決め、Anyone can respondの匿名回答で本人識別情報が得られると想定せず、不要な機微情報を自由記述へ入力させません。
変更を戻す方法
- 運用中フォームを編集する前に「コピー」を作り、新版は別URLでテストします。
- 分岐変更後に問題があれば、回答受付先を旧フォームへ戻します。質問を削除すると既存の回答データも失われるため、安易に削除しません。
- Power Automateに問題があればフローをオフにし、新規のLists書き込みを止めます。Formsの元回答は保持し、修正後に対象ResponseIdだけを管理手順で再処理します。
- 試験データは専用のテストフォームとテストリストで作ります。本番リストから削除するときはResponseIdで対象を確認し、バックアップと承認を取ります。
- Power Appsは公開版を更新する前に別バージョンで検証し、保存失敗時は前の公開版へ戻します。
よくある質問
回答者が「追加」ボタンで何行でも増やせますか?
Forms単体ではできません。最大件数を事前作成するか、長文へまとめます。動的な追加・削除が必須ならPower Appsなど別の入力UIを使います。
Sectionを複製すれば繰り返しになりますか?
複製できるのはフォーム作成者です。回答者の操作で増えるわけではありません。固定上限の設問セットを作る作業は短縮できますが、公開後の動的な反復にはなりません。
分岐で前の質問へ戻せますか?
戻せません。Microsoftは後続の質問またはフォーム末尾への分岐だけを案内しています。前へ戻る設定は回答体験を壊すため、各明細の後から次の明細へ進む前向きチェーンにします。
Power Automateを使えばForms画面に行追加できますか?
できません。Power Automateは送信イベントを受けて後処理する仕組みです。入力画面へコントロールを追加するものではありません。
同じ品名を2行入力した場合は重複として消してよいですか?
自動で消さない方が安全です。同じ品名を別用途・別数量で依頼した可能性があります。数量列や明細順を保持し、業務ルールで重複か正当な別行かを判断します。
Microsoft公式資料
- Create a form with Microsoft Forms
- Send a form and collect responses
- Add sections to your survey or questionnaire
- Use branching logic in Microsoft Forms
- Form, question, response, and character limits in Microsoft Forms
- Microsoft Forms connector
- Power Platform data policies
- Power Automate expression cookbook
- Create and update a collection in a canvas app
- Show a list of items in canvas apps
まとめ
Microsoft Formsには動的な繰り返し行がありません。上限が小さければ「明細、追加確認、次の明細」という前方向分岐、定番項目なら複数選択、件数だけ可変なら1行1項目の長文を使います。個人用Outlook.com、Hotmail、LiveアカウントはForms内で完結させ、Power AutomateのFormsコネクタを使いません。送信後の明細化にPower AutomateとLists、入力中の動的な行追加にPower Appsを使うのは、管理者が承認した職場・学校テナントで、必要なライセンス、環境権限、DLP許可がそろった場合だけです。Anyone can respondと組織限定の回答設定を混同せず、全分岐、空行、重複、途中失敗、権限をテストしてから公開します。

コメント