こちらのMicrosoft コミュニティでも似たようなQAはありました。
複数のファイルの対応ができなかったり、やりたかったことが実現できず….
この記事では複数ファイルにも対応したフローをご紹介します!
作成したフォーム
今回作成したのは、以下のようなファイルを添付できる設問のあるフォームです。
ちなみに、ファイルをアップロードする設問は以下のような手順で作成ができます。
この記事ではこのようなFormsの設問で添付されたファイルを取得し、メールに添付して送付する手順についてご紹介します!
では、さっそくいってみよう!
Power Automateの設定
全体の流れ
まずは全体のフローを見てみましょう!
上の図のとおり、大きく分けて3つの流れで構成されています。
- Formsの回答情報を取得
- 添付ファイル情報の取得・格納
- メールに添付
ひとつずつ丁寧に解説していくよ!
Formsの回答情報を取得
トリガーの設定
まずは「新しい応答が送信されるとき」を設定して、フォームが回答されたときに処理が走るようにします。
フォームの指定方法は以下の2通りがあります。
- 選択肢から選ぶ
- カスタム値を入力する
カスタム値はフォームを特定するIDで、フォームを開いたときのURLから取得できます。
URLの「&id=」から始まる文字列です。
コピーしたら入力欄に貼りつければOKです。
回答情報の取得
次に指定したフォームの回答情報を取得します。
「応答の詳細を取得する」を選択し、入力欄にそれぞれ以下の値を入れます。
- フォームID ⇒ 先ほどの手順で取得したカスタム値
- 応答ID ⇒ 動的なコンテンツから「応答ID」を選択
ここまで設定したらフローを一度保存してテストで実行してください。
そうすると、フローの実行結果を取得できます。
「応答の詳細を取得する」の出力で、ファイル添付の結果が「[{“name”:」で始まっているのでこれをコピーします。
この値を使って後で添付ファイルの情報を取得するよ!
添付ファイルの情報を取得
JSON解析する
先ほどコピーした添付ファイルの情報は名前付きの配列(=コレクション)の形式です。
この情報を取り出すために「JSONの解析」のアクションを追加します。
「コンテンツ」の欄には動的なコンテンツから添付ファイルの設問を選択してください。
「スキーマ」の欄は、下にある「サンプルから生成」をクリックし、先ほどコピーした文字列を貼り付けます。
ファイル情報を取り出す
次に添付ファイルの情報を取り出していくのですが、添付ファイル情報を格納するための配列を定義します。
「変数を初期化」のアクションを選択し、以下のように入力してください。
- 名前 ⇒ 変数の名前
- 種類 ⇒ 「アレイ」を選択
- 値 ⇒ 空欄のまま
「アレイ」は配列のことです。詳しい説明は省きますが、情報を入れる「箱」だと思ってください。
次に「作成」のアクションを追加します。
動的なコンテンツからJSONの解析の結果をどれでもいいので選択します。
するとアクションが突然「apply to each」の中にある状態になります。
これは添付ファイルが複数ある可能性があるためです。
ふたつファイルが添付されていれば当然ファイル名もふたつあるのでそれぞれを処理することになります。
次に「作成」の入力欄に以下の式を入れてください。
items(‘Apply_to_each’)は複数の添付ファイルのうちの特定のひとつを差していて、[‘name’]でそのファイル名を取り出しています。
これで添付ファイルのファイル名を取り出すことができました。
Apply to eachについては以下の記事が非常にわかりやすかったので詳しく知りたい方はご覧ください。
パスからファイルコンテンツを取得
次に先ほど取得したファイル名を使って、添付ファイルをコンテンツとして取り出します。
ちなみにFormsで添付されたファイルはどこに保存されているでしょうか?
答えは「SharePoint」の中です(個人のフォームならOneDrive)。
添付ファイルの保存場所について詳しく知りたい方は以下の記事をどうぞ!
このSharePointに保存されたファイルのパスを指定することでファイル情報を取得します。
「パスによるファイルコンテンツの取得」を追加しましょう。
まず、「サイトのアドレス」はグループフォームを作成したときのグループを選択してください。
次にファイルパスは以下のように指定してください。
最後のファイル名以外は手入力で入れて最後のファイル名のみ、動的なコンテンツで指定しましょう。
これで添付ファイルを取得できました!
ファイル情報をJSONに格納
取得したファイルを先ほど作成した変数に入れていきます。
「配列変数に追加」のアクションを追加しましょう。
添付ファイル情報の追加方法は決まっていて以下のようにしてきます。
「ファイル名」と「ファイルコンテンツ」は動的なコンテンツから選びましょう。
これで添付ファイルの情報を取得することができました!
これでファイルの取得はバッチリ!
Outlookにファイルを添付して送る
最後の工程です!取得したファイルをメールに添付して送りましょう!
メールを送るには「メールの送信(V2)」のアクションを追加します。
添付ファイルの設定方法はふたつ
添付ファイルの設定方法は以下のふたつです。
- 添付ファイルをひとつずつ設定する
- 配列に入れて一度に指定する(今回はこっち)
今回は添付ファイルの数が不確定なので後者の方法になります。
複数のファイルを添付するとき
まずは「詳細オプションを表示する」を選択してすべての項目を表示させます。
配列で添付ファイルを指定する場合は、ファイル添付表示の右上にあるマークをクリックします。
入力欄には先ほどファイル情報が入った配列変数を動的なコンテンツから選択します。
あとは、メールに宛先や件名、本文など必要な情報を入力して完成です!
実際に実行して確認してね!
(補足)より実用的なフローにするために
ここからはより実用的に使えるフローにするための改良方法をご紹介します!
添付ファイルがない場合のエラー対応
まず、先ほど作成したフローは添付がないときにエラーになります。
「JSONの解析」で解析するものがなくなってしまうからだね
対処方法として、「条件」のアクションを追加して分岐を作ります。
「条件」アクションには具体的に以下のように入力します。
- 左側の項目 ⇒ 「応答の詳細を取得する」のファイル添付の設問の出力
- 真ん中の項目 ⇒ 「次の値に等しくない」
- 右側の項目 ⇒ 空欄のまま
これで添付ファイルがあるときだけ、JSONの解析がされるようになりました。
今回はこれで以上です!おつかれさまでした!