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」 |
修正手順:基本の4ステップ
ここからは、JSON列を展開できない場合に試すべき基本的な手順を説明します。どのケースでも共通する部分が多いので、順番に確認していくとよいでしょう。
- データ型を確認し、必要に応じて変換する
Power Queryで読み込んだ直後のJSON列は、しばしば「任意の型」(Any)として認識されます。列を選択し、「ホーム」タブの「データ型」で「テキスト」または「JSON」に変更してください。もし「JSON」が選択肢にない場合は、まず「テキスト」に設定します。 - JSONの内容をプレビューで確認する
列ヘッダーの左側にある「展開」アイコン(上下矢印)をクリックします。表示されるダイアログで、列名の隣にある「読み込み」ボタンをクリックすると、サンプルデータが表示されます。ここで構造が正しく認識されるか確認します。 - RecordかListかを判断して適切な展開方法を選ぶ
JSON列のデータ形式が「Record」(波括弧{}で囲まれたオブジェクト)の場合は、そのまま展開できます。一方、「List」(角括弧[]で囲まれた配列)の場合は、一度「Listの展開」を行ってからRecordとして展開する必要があります。Power Queryでは、「列の追加」タブの「カスタム列」を使って、= Json.Document([列名])と記述し、明示的にJSONを解析する方法もあります。 - 展開オプションで抽出する列を選択する
展開ダイアログで、抽出したい列名にチェックを入れ、「元の列名をプレフィックスとして使用」のチェックを外すと、必要な列だけをシンプルな名前で取得できます。ここでエラーが発生する場合は、一度「すべての列を展開」で試し、その後に不要な列を削除すると安定します。 - エラーが解消しない場合は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列を正しく展開できるようになります。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
