【Power Automate】Formsファイルアップロードを設定する前に確認したいポイント

【Power Automate】Formsファイルアップロードを設定する前に確認したいポイント
🛡️ 超解決

Microsoft Formsでファイルアップロードを許可した場合、そのファイルをPower Automateで取得してOneDriveやSharePointに保存するフローを作ることがあります。しかし、なぜかファイルが正しく保存されない、フローがエラーで止まるといったつまずきが発生しがちです。原因はForms側の設定、Power Automateのトリガーやアクションの構成、または権限の不足など多岐にわたります。この記事では、ファイルアップロードに関するフローが想定通り動かないときに、どこを確認すればよいかを具体的に解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Formsの「ファイルアップロード」質問の設定と、Power Automateフローのトリガー条件、そしてアクションで使用しているファイル内容の参照方法です。
  • 切り分けの軸: フローが起動しないのか、起動してもファイルが取れないのか、保存先に書き込めないのか、という三段階で原因を特定します。
  • 注意点: 会社PCでFormsやPower Automateの設定を変更する場合は、社内のポリシーや管理者が設定した条件付きアクセスに影響されることがあります。管理者に確認が必要な項目は後述します。

ADVERTISEMENT

Formsのファイルアップロード設定とPower Automateの連携の基本

まず、Formsでファイルアップロードを利用するための前提条件を整理します。Formsの編集画面で「新しい質問の追加」から「ファイルアップロード」を選択すると、回答者がファイルを添付できるようになります。しかし、この機能を有効にするだけではPower Automateと自動連携できません。フローでファイルを扱うには、Formsトリガーが「新しい応答が送信されたとき」であり、さらに「ファイルアップロード」の質問で送られたファイルを正しく参照する必要があります。

Forms側で注意すべき設定項目

ファイルアップロードを有効にしたFormsでは、応答ごとにアップロードされたファイルはFormsの内部ストレージ(OneDrive for Business上の隠しフォルダ)に保存されます。Formsの設定で「ファイルのアップロード」を許可しただけでは、回答者がどのようなファイル形式やサイズまで許容されるかという制限がかかりません。デフォルトでは1ファイルあたり10MBまで、合計1GBまでとなっていますが、テナント全体の制限や管理者ポリシーによって変更される可能性があります。また、ファイルの種類を制限する設定はFormsのUI上では提供されていないため、後処理でフィルターする必要があります。

Power Automateフローの基本的な構成

フローは「新しい応答が送信されたとき」トリガーで開始します。その後、「応答の詳細を取得」アクションでフォームの回答を取得し、その中にファイルアップロードの質問に対する応答が含まれます。ファイル自体は「ファイルコンテンツ」として動的コンテンツから選択できます。よくある誤りは、ファイルの「表示名」や「パス」だけを使ってしまい、実際のバイナリデータを扱えていないことです。ファイルを保存するには、「ファイルコンテンツ」を適切に「ファイルを作成」や「ファイルの追加」アクションに渡す必要があります。

つまずきの原因を切り分けるための確認手順

フローが正しく動作しない場合、以下の手順で原因を特定していきます。切り分けの軸は「フローが起動するか」「ファイルコンテンツが取得できるか」「保存先に書き込めるか」の3つです。

  1. Step 1: フローがトリガーされているか確認する。 Power Automateの「実行履歴」を開き、対象のフローの最新の実行を確認します。実行が存在しない場合、トリガー条件が満たされていないか、FormsとPower Automateの接続に問題があります。接続を再作成してみてください。
  2. Step 2: 実行履歴でエラーがないか確認する。 実行がある場合は、「失敗」や「成功」を確認し、失敗しているならエラーメッセージを読みます。特に「ファイルが見つかりません」や「アクセスが拒否されました」といったメッセージが手がかりになります。
  3. Step 3: 応答の詳細からファイル情報が正しく取得できているか確認する。 フローの「応答の詳細を取得」アクションの出力を実行履歴から確認します。ファイルアップロード質問に対応するフィールドに「ファイルコンテンツ」が含まれているかをチェックします。含まれていない場合、質問のIDが変わった可能性があるため、フローを編集して動的コンテンツを再選択してください。
  4. Step 4: ファイル保存アクションの設定を確認する。 「ファイルを作成」や「ファイルの追加」アクションで、ファイルコンテンツとして「ファイルコンテンツ」が正しくバインドされていることを確認します。誤って「ファイル名」や「ファイル識別子」だけを指定していないか注意してください。
  5. Step 5: 保存先の権限を確認する。 フローがOneDriveやSharePointにファイルを保存する場合、フローを実行するユーザー(または接続参照のアカウント)に書き込み権限があるか確認します。特にSharePointの場合は、サイトのメンバー権限が必要です。

よくある失敗パターンと対処法

実際の現場で発生しやすいパターンをいくつか紹介します。それぞれの原因と対策を把握しておくと、トラブルシューティングがスムーズになります。

パターン1: フローは起動するがファイルが空で作成される

この場合、ファイルコンテンツが正しく渡されていない可能性が高いです。動的コンテンツの選択肢で「ファイルコンテンツ」ではなく「ファイルの表示名」などを選んでいないか確認してください。また、Formsの質問の種類が「ファイルアップロード」であることを再確認します。もしフォームの質問を後から変更した場合、フローの動的コンテンツが古いままになっていることがあります。フローを編集し、該当するアクションの動的コンテンツを一度削除してから再度選択し直すと解決することが多いです。

パターン2: 「応答の詳細を取得」でファイルコンテンツが取得できない

原因として、Formsの質問IDが変わった、またはFormsの設定でファイルアップロードが無効になった可能性があります。また、フローが古いバージョンのFormsコネクタを使っている場合、動的コンテンツに「ファイルコンテンツ」が表示されないことがあります。この場合は、コネクタの更新、またはフローを削除して再作成する必要があります。さらに、Formsの応答にファイルが含まれていない(回答者がファイルを添付しなかった)場合も同様の現象になります。そのため、フローの条件分岐でファイルが存在する場合のみ処理を行うように設計してください。

パターン3: アクセス権限エラーが発生する

Power AutomateがOneDriveやSharePointにファイルを書き込む際、実行者のアカウントに適切な権限がないとエラーになります。特にSharePointの場合は、フローで使用する接続参照が適切な権限を持っているか確認してください。接続参照を使用している場合、その参照が指すアカウント(通常はフロー作成者またはサービスアカウント)に書き込み権限が付与されている必要があります。また、OneDrive for Businessの場合は、Formsのファイル保存場所(OneDrive上の隠しフォルダ)とは別の場所に保存しようとすると、権限エラーが発生することがあります。

組織の管理者に確認すべき設定項目

個人の設定ではどうにもならないケースもあります。以下の項目については、社内のMicrosoft 365管理者に問い合わせてください。

確認項目 管理者に伝える内容
Formsのファイルアップロード制限 テナント全体のファイルサイズ上限やファイル種類の制限が設定されているか。Power Automateで扱う際に一時的なストレージ容量も影響します。
Power Automateのデータ損失防止(DLP)ポリシー FormsコネクタとOneDrive/SharePointコネクタが同じDLPポリシー内で許可されているか。ビジネスデータの分類によっては制限されることがあります。
SharePointのサイト権限と外部共有設定 フローがファイルを保存するSharePointサイトに、フロー実行アカウントが適切なアクセス権を持っているか。匿名ユーザーからのアクセスが必要な場合は設定変更が必要です。
条件付きアクセスやMFAの影響 フロー実行に使用するアカウントが多要素認証を求められるとフローが停止する場合があります。サービスプリンシパルまたは非対話型認証の利用可否を確認してください。

これらの設定は個人で変更できないため、管理者と協力して解決する必要があります。特にDLPポリシーは、Power Automateのフローが異なるコネクタ間でデータをやり取りする際に大きく影響します。

よくある質問(FAQ)

ここでは、ファイルアップロードに関するPower Automateフローでよく寄せられる質問とその回答をまとめました。

Q1. 複数のファイルをアップロードできるFormsで、すべてのファイルを取得するには?

Formsでは1つの質問で複数ファイルのアップロードを許可できます。Power Automateでこれらを取得するには、「応答の詳細を取得」の後に「ファイルのリスト」というアクションはありません。代わりに、動的コンテンツとして「ファイルコンテンツ」は最初の1ファイルのみを参照します。すべてのファイルを処理するには、Apply to each ループを使用し、ファイルアップロード質問の「応答」配列をループする必要があります。ただし、現時点ではFormsコネクタの制限で、複数ファイルを個別に扱うのは難しい場合があります。代替案として、Formsの質問をファイルごとに分けるか、Power AutomateのHTTPアクションでGraph APIを直接呼び出す方法も検討してください。

Q2. ファイルの種類(拡張子)でフィルターしたいが、Forms側で制限できないか?

FormsのUIではアップロード可能なファイルの種類を制限する機能が提供されていません。そのため、Power Automateのフローの中で、ファイル名から拡張子を取得し、条件分岐で許可されていない種類のファイルは削除または警告メールを送信するなどの処理を追加してください。ただし、悪意のあるファイルの完全な防止は困難です。

Q3. フローが「400 Bad Request」エラーで停止する。何が原因か?

400エラーは多くの場合、リクエストの内容が不正であることを示します。特に「ファイルを作成」アクションで、ファイルコンテンツが空または壊れている、またはファイル名に使用できない文字が含まれていることが考えられます。実行履歴の出力を確認し、ファイルコンテンツが正しいバイナリデータとして渡されているか、ファイル名にコロンやスラッシュなどの特殊文字が含まれていないかをチェックしてください。また、保存先のフォルダパスが存在するかも確認します。

まとめ

Power AutomateでFormsのファイルアップロードを扱う際のつまずきは、設定の確認と原因の切り分けを段階的に行うことで解決できます。最初にフローが起動しているか、次にファイルコンテンツが正しく取得できているか、最後に保存先への書き込み権限を確認することが基本です。管理画面の設定は個人で変更できないケースもあるため、管理者と連携しながら進めてください。この記事で紹介した手順を実践すれば、ファイルアップロードに関するトラブルの多くは解消できるはずです。


この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。