Formsで受け取ったファイル1個を承認依頼に添付する
社内Formsで受け取ったPDFをOneDriveから取得し、承認者1名に送ります。JSONとファイル本体の違い、空欄・件数の確認、承認と却下の分岐を説明します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。
実行前に確認
- この手順は個人所有の組織内フォーム用です。グループフォームはグループのSharePointに保存されるため、OneDriveの取得をそのまま流用できません。フォームをグループへ移した場合も接続・保存先を見直します。個人所有とは、一般消費者向けMicrosoftアカウントという意味ではありません。
- ファイルアップロード質問は組織内向けの回答設定が必要です。匿名の外部申請者がアップロードできる手順ではありません。利用制限に当たったら管理者に確認し、共有範囲やセキュリティ設定を安易に緩めないでください。
- 承認通知メールはサイズが5MBに達するまで添付され、それを超える場合は承認センターで確認する案内になります。Formsのアップロード上限とメールの添付条件は別です。メールに見えないことだけで取得失敗と判断しないでください。
- 承認者へファイル内容のコピーを渡すため、送ってよい資料と相手か確認します。この例は公開共有リンクを作りません。再実行すると承認依頼を重複作成する可能性があります。応答IDによる処理済み管理は別途必要です。
- 待機のタイムアウト・キャンセル・接続エラーは却下と同じではありません。既定の成功時実行のままにし、実行履歴で失敗を確認します。長期間の承認待ちや自動再申請を扱う設計は含みません。
1使うトリガーとアクション
- トリガーとアクション新しい応答が送信されるとき → 応答の詳細を取得するForms:同じフォームIDと今回の応答ID
- アクション作成 → 条件UploadAnswerに資料の回答を入れ、空なら失敗で終了
- アクションJSON の解析 → 条件空でない側:UploadFilesを解析し、件数=1を確認
- アクションファイル コンテンツの取得1件の側:OneDrive for Businessでidから本体を取得
- アクション開始して承認を待機同じ枝:名前と取得したファイル本体を添付
- アクション条件 → 作成結果=Approveなら承認済み、Rejectなら却下を実行履歴に記録
図で見る処理のイメージ
概念図件名「案内文の確認」とPDF1個を送信する練習です。
受け付け
Forms応答ID42/資料sample.pdf
参照情報を確認
空欄を除外 → JSON解析 → 件数1を確認
本体を取得
ファイルid → OneDriveのファイルコンテンツ
添付して承認
名前+本体を1名に送信。Approve/Rejectを分岐
承認なら「承認済み」、却下なら「却下」が実行履歴に残ります。空の資料や件数違いでは承認を送りません。
架空の練習データによる説明です。実際のフローを実行して確認した結果ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する11ステップの設定と確認方法
- 1
準備:職場・学校アカウントで自分が所有する個人フォーム「資料確認」を作ります。グループのフォームではありません。「件名」は必須テキスト、「資料」は必須のファイルアップロード、ファイル数の上限は1、種類はPDFに設定。回答者は組織内に限定します。練習には機密情報のない1MB未満のPDFを使います。1MBはこの練習の目安で、サービスの上限ではありません。
- 2
FormsとOneDrive for Businessはフォーム所有者の接続を使い、アップロード先を読み取れることを確認します。承認者はまず自分1名にします。Forms・OneDrive・承認を利用できる契約、環境、組織のDLPポリシーを確認してください。標準コネクタでもすべての契約で無料とは限りません。
- 3
最初はFormsのトリガーと「応答の詳細を取得する」だけを作り、両方に資料確認のフォームIDを設定します。応答IDはトリガーの動的コンテンツを選びます。件名=案内文の確認、資料=sample.pdfで1回送信し、実行履歴の応答詳細から資料の出力を控えます。資料の出力はファイル名やidを含むJSON文字列で、PDF本体ではありません。
- 4
編集に戻り、データ操作の「作成」を追加して名前を UploadAnswer に変更、入力に応答詳細の「資料」を選びます。その後の条件の左辺を式 empty(outputs('UploadAnswer'))、比較を等しい、右辺を式 true にします。はい側は「終了」(失敗、資料が空です)。いいえ側に次の解析を置きます。
- 5
空でない側に「JSON の解析」を置き、名前を UploadFiles に変更。コンテンツはUploadAnswerの出力、スキーマは「サンプルから生成」に先ほどの資料の出力を貼り付けます。実際の出力から生成し、他人のIDやサンプルファイル名を固定で使わないでください。
- 6
解析の後に条件を置き、式 length(body('UploadFiles')) が数値1と等しいか確認します。いいえ側は「終了」(失敗、資料は1個にしてください)。はい側だけに以下の取得・承認を置きます。これにより空配列や複数ファイルの先頭だけを黙って採用しません。
- 7
OneDrive for Businessの「ファイル コンテンツの取得」のファイル欄に、式 first(body('UploadFiles'))?['id'] を設定します。これはファイルIDです。Formsの応答ID、URL、名前とは違います。「パスを使用して取得」のアクションとは入力が異なります。
- 8
続けて「開始して承認を待機」を置き、名前を FileApproval に変更。種類=承認/拒否 - 最初に応答、タイトル=「資料確認:」と応答詳細の件名、割り当て先=自分の組織メール。添付ファイル名に式 first(body('UploadFiles'))?['name']、添付コンテンツにOneDriveの動的コンテンツ「ファイル コンテンツ」を選びます。JSONやリンクを添付コンテンツに入れないでください。
- 9
承認の後の条件でFileApprovalの動的コンテンツ「結果(Outcome)」を Approve と比較。はい側の「作成」に「承認済み」を入力します。いいえ側ではさらに結果=Rejectを判定し、はいなら「作成」に「却下」、それ以外は「終了」(失敗、想定外の承認結果)。この例は結果を実行履歴で確認し、申請者へのメールや台帳更新は行いません。
- 10
保存後、新しい回答を送り、承認依頼でsample.pdfを開けるか確認します。承認と却下を別々の回答で試し、それぞれの作成アクションだけが実行されることを確認。空欄は必須設定で送信できないことも確認します。設定変更などで空の値や空配列が来た場合は承認前に終了する設計です。
- 11
つまずいたら:JSON解析の失敗は「資料」以外の出力を選んでいないか、スキーマが今回の出力と一致するか確認。取得の404/403はフォーム所有者とOneDrive接続、id、保存先を確認。添付が壊れる場合は文字列でなくファイルコンテンツを選び直します。失敗を無理に成功扱いにして承認へ進めないでください。
- 対象環境
- クラウドフロー(組織アカウント・個人所有フォーム)
- 更新日
- 2026年10月7日