0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerAutomateのJSONファイルを読み取ると内部サーバーエラー

Posted at

PowerAutomateでフローからファイル入出力するときの形式として、SharePointリストやExcelファイルよりもJSONファイルに優位性があることがあります。
これは例えばフローAのある処理の結果を利用してフローBが別のある処理を実行するような場合です。

JSONファイルの優位性は:

  • 読み書きが高速
  • 書き込み中の「中途半端な状態」で参照されるリスクがない
  • 日時データの表現(シリアル vs. ISO8601)に関する難しさがない
  • 日時データのタイムゾーンに関する難しさがない
  • 配列でもマップでも取り扱える
  • レコードを構成するデータをカラム(列)毎にアクションの入力欄に設定する面倒がない

──といったところ。

Problem

ところで、JSONファイルの内容を読み取るために「ファイル コンテンツの取得」ないし「パスによるファイル コンテンツの取得」アクションを使用していると、次のようなエラーが発生してしまうことがあります:

InternalServerError. 内部サーバー エラーが発生しました。追跡 ID は、'3f1bf9e6-6b4b-4fc5-bceb-625ad746183a' です。

image.png

Solution

「内部サーバーエラー」では原因がまったくわからないわけですが、私が遭遇した事例ではあれこれ試した結果、以下の条件(AND)が満たされた場合にエラーとなることがわかりました:

  1. JSONのルート・レベルが配列([...]
  2. アクションの「コンテンツタイプの推論」が「はい」(true

ルート・レベルをオブジェクト({"foo": [...]})にするか、「コンテンツタイプの推論」を「いいえ」(false)にすると、このエラーは発生しなくなります。

「コンテンツタイプの推論」を「いいえ」(false)にすると当然拡張子によるコンテンツタイプの推論が行われなくなるので、アクションの出力形式は「JSON形式のデータを内容とする文字列」となります("[...]")。
このためフローの後続アクションでオブジェクトとして利用する場合は、json(...)関数でデシリアライズを行う必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?