子フローの [ファイル] パラメーターに、SharePoint の「ファイル コンテンツ」をそのまま設定すると、うまく動かない。
この記事では、この現象の原因と対処方法を整理する。
😥 発生した問題
ファイルを扱う処理だけを子フローに切り出そうとしたとき、子フローの [ファイル] パラメーターに渡す値の指定でハマりました。
子フローを呼び出す親フロー側では、SharePoint の『パスによるファイル コンテンツの取得』アクションでファイル コンテンツを取得し、動的コンテンツから「ファイル コンテンツ」として選べるので、そのまま子フローの [ファイル] パラメーターに設定すればよさそうに見えます。
ところが、この状態でフローを実行するとエラーになります。
body('パスによるファイル_コンテンツの取得')
❓ エラーの原因
原因は、親フローから子フローの [ファイル] パラメーターに、「ファイル コンテンツ」のオブジェクト全体を渡していたことです。
Power Automate の画面上では「ファイル コンテンツ」という 1 つの値に見えますが、実行履歴で出力を確認すると、$content-type (ファイルの種類) と $content (ファイル本体の内容) を持つオブジェクトになっています。
例:
{
"$content-type": "application/pdf",
"$content": "JVBERi0xLjQK..."
}
動的コンテンツから「ファイル コンテンツ」をそのまま選ぶと、子フローの [ファイル] パラメーターにはオブジェクト全体が渡されます。
つまり、子フローの [ファイル] パラメーターが受け取りたい値と、実際に渡していた値の形が合っていなかった、ということです。
🛠 対処方法
対処方法は、「子フローの実行」アクションの [ファイル コンテンツ contentBytes] パラメーターに「ファイル コンテンツ」をそのまま指定するのではなく、$content の値を指定することです。
$content は動的コンテンツから選択できないため、このパラメーターには次の式を直接入力します。
body('パスによるファイル_コンテンツの取得')?['$content']



