はじめに
Power Automateで外部ストレージからJSON形式で返ってきたデータを変数にセットする際は、「JSONの解析」を噛ませてフロー内に読ませてやる必要があります。
その「JSONの解析」の出力内容を変数にセットするのに2時間ほど格闘したので、メモとして残します。
問題の状況
Salesforceのレコードを「SOQLクエリを実行する」アクションで取得するとJSONの形式で値が返ってきます。
JSONの返却値は、フロー内で動的値として扱うために「JSON」の解析を噛ませるわけですが、そのJSON内に配列の要素がある場合、PowerAutomateでは「for each」のアクションが自動的に挟まる仕様となってます。便利ですね。

しかしながらこの状態だと「JSONで定義されてないですよ」のエラーが出てしまいます。
問題の原因
エラーが言ってる通りなんですけど、今回の場合「[body]?[body]?[records]」なんて要素は見つからねえぜ、ってことですね。
それが、先ほど自動で生成された「for each」が「outputs('JSON_の解析')?['body']?['body']?['records']」と、なぜか['body']が二つ重なった状態で設定されてしまっています。
こいつを修正してやれば万事解決です。
解決方法
「for each」の内容を以下に変更してやります。
変更前:「outputs('JSON_の解析')?['body']?['body']?['records']」
変更後:「outputs('JSON_の解析')?['body']?['records']」

はい、いけましたね。

今回はSalesforce側にデータがなかったので、スキップとなって問題ない箇所です。
あとがき
まあ見る限り、普通にバグですね。
今回のように、まだまだPowerAutomateはバグが多くて随時修正されている状態です。
もう数か月したら、もう少し使いやすくなってるだろうと期待したいですね。
