ADVERTISEMENT

【Excel】Power QueryでWeb APIのJSON列を展開できない時の修正手順

【Excel】Power QueryでWeb APIのJSON列を展開できない時の修正手順
🛡️ 超解決

Power Queryを使ってWeb APIから取得したJSONデータをExcelに読み込むと、特定の列が展開できずに困ることがあります。特にJSON列の中にネストされたオブジェクトや配列が含まれている場合、標準の展開操作がエラーになるかデータが消えてしまうことがあります。この問題は、JSONの構造やPower Queryの設定、データ型の違いなど複数の要因で発生します。ここでは、具体的な原因の切り分け方と、確実に展開できるようにするための手順を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Power Queryエディタの「テーブルの変換」タブにある「JSONの展開」ボタンと、エラーメッセージの内容
  • 切り分けの軸: JSON列のセルが「Record」または「List」のどちらの種類か、展開する列を選択するダイアログでプレビューが表示されるかどうか、データ型が正しく認識されているか
  • 注意点: 会社PCで実行する場合、Power Queryのアドインが有効になっていること、インターネット接続が許可されていること、管理者がWeb APIのアクセス制限をしていないかを事前に確認

ADVERTISEMENT

Power QueryでJSON列が展開できない主な原因

JSON列の展開に失敗する原因はいくつかあります。まずは代表的な4つのパターンを確認してください。これらを把握することで、解決の方向性が明確になります。

原因 現象 典型的なエラーメッセージ
JSONの構造が複雑(入れ子が深い) 展開ボタンをクリックしても何も表示されない、またはエラーになる 「式エラー: JSON をテーブルに変換できません」
データ型が「Any」であり、テキストとして扱われている 展開オプションがグレーアウトしている 「値はテキストです。JSONとして解析するには、テキストからの変換が必要です」
JSON列に配列(List)が含まれ、単一のRecordでない 展開後に行が増えすぎるか、一部のデータが欠落する 「列を展開できません。この列にはList型の要素が含まれています」
Web APIからの応答に認証失敗やアクセス権限の問題がある データ取得時にエラーが発生し、JSONそのものが正しく読み込まれない 「Web.Contents で要求が失敗しました。(401) Unauthorized」
お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

修正手順:基本の4ステップ

ここからは、JSON列を展開できない場合に試すべき基本的な手順を説明します。どのケースでも共通する部分が多いので、順番に確認していくとよいでしょう。

  1. データ型を確認し、必要に応じて変換する
    Power Queryで読み込んだ直後のJSON列は、しばしば「任意の型」(Any)として認識されます。列を選択し、「ホーム」タブの「データ型」で「テキスト」または「JSON」に変更してください。もし「JSON」が選択肢にない場合は、まず「テキスト」に設定します。
  2. JSONの内容をプレビューで確認する
    列ヘッダーの左側にある「展開」アイコン(上下矢印)をクリックします。表示されるダイアログで、列名の隣にある「読み込み」ボタンをクリックすると、サンプルデータが表示されます。ここで構造が正しく認識されるか確認します。
  3. RecordかListかを判断して適切な展開方法を選ぶ
    JSON列のデータ形式が「Record」(波括弧{}で囲まれたオブジェクト)の場合は、そのまま展開できます。一方、「List」(角括弧[]で囲まれた配列)の場合は、一度「Listの展開」を行ってからRecordとして展開する必要があります。Power Queryでは、「列の追加」タブの「カスタム列」を使って、= Json.Document([列名]) と記述し、明示的にJSONを解析する方法もあります。
  4. 展開オプションで抽出する列を選択する
    展開ダイアログで、抽出したい列名にチェックを入れ、「元の列名をプレフィックスとして使用」のチェックを外すと、必要な列だけをシンプルな名前で取得できます。ここでエラーが発生する場合は、一度「すべての列を展開」で試し、その後に不要な列を削除すると安定します。
  5. エラーが解消しない場合はM関数で直接変換する
    上記の標準機能でうまくいかない場合、詳細エディタ(「ホーム」タブの「詳細エディタ」)を開き、M言語で直接JSONを解析します。例として、Table.ExpandRecordColumn(前のステップ, "JSON列", {"key1", "key2"}) のように記述します。この方法は確実ですが、M言語の知識が必要です。

失敗パターンと回避策

パターン1: 展開ダイアログが空で表示される

展開ボタンを押しても、列名の一覧が表示されない場合があります。これはPower QueryがJSONを正しく解析できていないサインです。原因として、列のデータ型が「Any」のままであるか、JSONの形式が不正(例:文字列が正しくエンコードされていない)であることが考えられます。まずは列のデータ型を「テキスト」に変更し、その後「変換」タブの「JSONの解析」を実行してみてください。

パターン2: 展開後に列が増えすぎてパフォーマンスが低下する

List型のJSONを展開すると、元の行数が増えるためにシートが重くなることがあります。例えば、1つのセルに10件の配列があると、1行が10行に分割されます。これを防ぐには、展開前に「リストの集計」を行い、必要なデータのみを抽出するカスタム列を作成します。または、展開後に「グループ化」で再度集約する方法もあります。

パターン3: 認証エラー(401)が発生する

Power QueryでWeb APIを呼び出す際、APIキーやOAuthトークンが必要な場合、「Web.Contents」関数に適切なヘッダーを設定していないと401エラーになります。この場合は、Power Queryエディタで「データソース設定」から資格情報を更新するか、Mコード内にヘッダーを追記します。例として、Web.Contents("https://api.example.com/data", [Headers=[#"Authorization"="Bearer トークン"]]) のように記述します。

ADVERTISEMENT

管理者に確認すべき設定

会社PCでPower Queryが動作しない場合、以下の設定を管理者に確認してください。

  • Power Queryアドインがインストールされ、有効になっているか(Excelのオプション→アドイン)
  • グループポリシーでWebコンテンツへのアクセスが制限されていないか(「データの取得と変換」の全般設定)
  • ファイアウォールでAPIのエンドポイントが許可されているか
  • プロキシサーバーを使用している場合、Power Queryがプロキシを経由する設定になっているか
  • クラウドデータソース(例えばAzure SQL)への接続が許可されているか

よくある質問(FAQ)

質問 回答
JSON列が「Record」と表示されないのですが、どうすればいいですか? データ型が「任意」のままである可能性が高いです。列を選択し、「変換」タブの「JSONの検出」を実行してから展開を試してください。
展開後に一部の列が欠落しているようです。 元のJSON構造内で、一部のレコードにしか存在しないキーがあると、欠落が発生します。展開オプションで「すべての列」を選び、その後不要な列を削除するか、M関数 Table.ExpandRecordColumn で明示的に列名を指定してください。
Power Queryの「JSONの展開」がグレーアウトしています。 その列がJSON形式として認識されていない可能性があります。まず列のデータ型を「テキスト」に変更し、その後「変換」タブの「JSONの解析」を試してください。
Web APIの応答データが大きすぎて、Excelが遅くなります。 Power Queryの「データの読み込み」時に、「接続のみ作成」にチェックを入れ、必要な行数だけをフィルターしてから読み込むとパフォーマンスが向上します。

まとめ

Power QueryでWeb APIのJSON列を展開できない場合は、まずデータ型の確認とJSONの構造把握が重要です。標準の展開機能で解決しない場合は、M言語を使ったカスタム変換や、データソース設定の見直しを行ってください。また、会社のセキュリティポリシーが原因でアクセスできないこともあるため、管理者と連携しながら進めると確実です。今回紹介した手順を試すことで、ほとんどのケースでJSON列を正しく展開できるようになります。


📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】

ADVERTISEMENT