ADVERTISEMENT

【Excel】Power QueryでAPI制限により更新が止まる時の確認ポイント

【Excel】Power QueryでAPI制限により更新が止まる時の確認ポイント
🛡️ 超解決

Power QueryはExcelやPower BIでデータを取り込む強力な機能ですが、外部APIにアクセスするクエリが突然更新されなくなることがあります。特に企業で利用する場合、レポートの自動更新が止まると業務に支障が出るため、原因を迅速に特定する必要があります。この記事では、API制限が原因でPower Queryの更新が止まった際に、どこを確認すればよいかを具体的に解説します。エラーメッセージの読み解き方、切り分けの手順、管理者に依頼すべき設定など、実務で役立つポイントを網羅しました。

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

  • 最初に見る場所: エラーメッセージの内容とPower Queryのクエリ設定画面。特に「データソース設定」と「プライバシー」のレベルを確認します。
  • 切り分けの軸: エラーが「権限不足」「ネットワーク障害」「API制限超過」のいずれかを、HTTPステータスコードとエラーテキストで判断します。
  • 注意点: 会社PCではレジストリやファイアウォール設定を自分で変更せず、必ずIT管理者に確認してください。また、APIキーの再利用やクエリの無闇な分割は逆効果になることがあります。

ADVERTISEMENT

Power QueryとAPI制限の基本

Power Queryは、Webサービスやデータベースからデータを取得する際に、API(Application Programming Interface)を介して通信を行います。多くのAPIには「レート制限」や「クォータ制限」が設定されており、短時間に大量のリクエストを送ると制限がかかって応答を拒否されることがあります。Office 365やMicrosoft Graph API、各種SaaSのAPIは特に厳しい制限を持つ場合があり、Power Queryの更新が突然止まる原因の一つです。制限の種類としては、1分間あたりの呼び出し回数、1日あたりの総呼び出し数、同時接続数などがあり、それぞれ異なるエラーメッセージが返されます。

API制限とは何か

API制限は、サービス提供者がサーバー負荷を軽減し、公平な利用を保つために設けるルールです。例えば、Microsoft Graph APIでは1分あたり10000リクエスト、1アプリあたり1時間で最大100万リクエストといった制限があります。制限を超えるとHTTP 429(Too Many Requests)や403(Forbidden)が返されます。Power Queryはこのような応答を受け取ると、更新を中止してエラーを表示します。制限の内容はAPIのドキュメントに記載されているため、事前に確認しておくことが重要です。

なぜPower Queryの更新が止まるのか

Power Queryは、クエリの実行中に複数のAPI呼び出しを行うことがあります。特に、テーブルの結合やフィルターをかけた場合、内部的に多くのリクエストが発生することがあります。また、複数のユーザーが同時に同じAPIにアクセスする環境では、組織全体のクォータを使い切ることもあります。エラーが発生すると、「データソースの資格情報が無効です」「Web.Contentsでエラーが発生しました」といった曖昧なメッセージが表示されるため、API制限を見落としがちです。まずはエラーの詳細を確認することが解決への第一歩です。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

更新が止まったときの最初の確認ポイント

Power Queryの更新が止まったら、以下の手順で原因を切り分けてください。これらの確認は特別な権限がなくても行えるものがほとんどです。

  1. エラーメッセージを詳細に確認する
    Excelの「クエリと接続」ウィンドウでエラーが表示されているクエリをクリックし、「エラーの詳細」を開きます。表示されるテキストに「429」「Too Many Requests」「Rate limit exceeded」などの文言があれば、API制限が原因です。
  2. クエリの実行時間を確認する
    同じクエリを手動で再実行してみて、正常に動作するか試します。時間帯によって制限が異なる場合(例えばピーク時のみ制限が厳しい)は、更新が成功することもあります。その場合は、スケジュール更新の時間を変更することで回避できる可能性があります。
  3. 使用しているAPIのドキュメントを参照する
    Power QueryがアクセスしているWebサービスの制限値や制限のリセット時間を確認します。例えば、Microsoft Graph APIの制限は「Microsoft Graph documentation」に公開されています。
  4. クエリが送信するリクエスト数を推定する
    クエリの中で複数のテーブルを取得している場合、それぞれが独立したAPI呼び出しになることがあります。M言語の「Web.Contents」関数が何回呼ばれているか、クエリエディターの「詳細エディター」で確認します。複数の呼び出しが同時に行われていると、制限に引っかかりやすくなります。
  5. プライバシー設定を一時的に緩めてテストする
    Power Queryの「データソース設定」でプライバシーレベルが「プライベート」になっていると、データの組み合わせによっては追加のAPI呼び出しが発生する場合があります。「パブリック」に変更してから更新を試し、改善するか確認します。ただし、会社のポリシーに抵触しないように注意してください。

上記の手順でAPI制限が疑われる場合は、次のセクションでより詳しく切り分けていきます。

API制限が原因かどうかの切り分け方法

エラーの内容だけではAPI制限か他の原因か判断しにくい場合があります。以下の比較表を参考に、症状ごとに原因を絞り込んでください。

症状 考えられる原因 確認方法
HTTP 429エラーが表示される APIレート制限超過 エラーメッセージに「429」が含まれているか確認
「アクセスが拒否されました」と表示されるが、資格情報は正しい APIクォータ超過または権限不足 Azure PortalなどでAPI使用量を確認、または管理者に問い合わせ
更新が途中で止まるがエラーメッセージなし タイムアウトまたはネットワーク問題 Power Queryのトレースログを取得し、応答時間を確認
特定の時間帯だけ失敗する 組織全体のAPI利用集中 他のユーザーも同じ時間にエラーが発生しているか確認

この表に該当する症状がある場合、API制限が有力な原因です。特にHTTP 429は明確なサインです。一方、エラーメッセージが「データソースの資格情報が無効です」と表示される場合は、認証トークンの期限切れやパスワード変更が原因であることが多いため、別の切り分けが必要です。

ADVERTISEMENT

よくある失敗パターンと対処法

API制限が原因の更新停止に陥りがちな典型的なパターンをいくつか紹介します。自身のクエリに当てはまるものがないか確認してみてください。

パターン1: 一度に大量のAPI呼び出しを行うクエリ

例えば、複数のSharePointリストからデータを取得する際、各リストに対して個別のWeb.Contents呼び出しを行っていると、短時間で制限に達します。解決策としては、可能な限り一つのAPIエンドポイントで複数のデータを取得できるようにするか、Power Queryの「関数」を使ってリクエストを間引く方法があります。具体的には、M言語で「List.Transform」を使用する場合、一度に全てのリストを取得するのではなく、遅延評価を活用して逐次的に呼び出すように変更します。

パターン2: フィルター処理が原因で内部リクエストが増加

Power QueryはデータのフィルターをSQL Serverのようにサーバー側で処理するのではなく、ローカルで行う場合があります。特に「テーブルの結合」や「条件列の追加」で多くの行を処理する際、内部的にAPIを何度も呼び出すことがあります。この場合、クエリのステップを見直し、不要な結合を避ける、またはフィルターをAPIクエリに組み込むことで呼び出し回数を減らせます。

パターン3: 更新頻度が高すぎる

Excelの「接続のプロパティ」で更新間隔を数分おきに設定していると、API制限に引っかかりやすくなります。特に、共有データソースの場合、他のユーザーと同時に更新するとより顕著です。対策として、更新間隔を30分以上に伸ばす、または手動更新のみに切り替えることを検討します。業務上どうしても頻繁な更新が必要な場合は、Power Automateなどの別ツールでバッチ処理を行う方法もあります。

管理者に確認すべき設定と情報

API制限が組織全体の問題である場合、個人で解決できないことがあります。以下の情報をまとめて管理者に報告するとスムーズです。

  • API使用量のモニタリング: Azure Portalや各サービスの管理画面で、API使用量が制限に近づいていないか確認してもらいます。例えば、Microsoft Graph APIの場合は「Microsoft Entra管理センター」の「アプリ登録」から使用量を確認できます。
  • アプリケーションの認証方法: Power Queryで使用している認証が「ユーザー委任」か「アプリケーションアクセス」かに応じて制限の対象が異なります。アプリケーションアクセスの場合、テナント全体の制限が適用されるため、管理者がクォータの引き上げを申請できる場合があります。
  • プロキシやファイアウォールの設定: 一部の環境では、プロキシがAPIリクエストをキャッシュしたり、特定のヘッダーを削除することがあります。これにより、認証が通らず再試行が繰り返されて制限超過に至ることがあります。管理者にプロキシの除外設定を依頼してください。
  • Power Queryの更新設定: バックグラウンド更新や自動更新が有効になっていると、意図せず何度も同じAPIを呼び出します。必要に応じて、手動更新のみに変更してもらうよう相談します。

管理者に報告する際は、エラーメッセージのスクリーンショット、クエリのMコードの一部、発生した日時と時間帯を伝えると、原因特定が早まります。

よくある質問

Q1. API制限にかかった場合、どのくらい待てば復旧しますか?
制限の種類とサービスによります。多くのAPIは1分から1時間でリセットされます。例えば、Microsoft Graph APIのレート制限は1分単位でリセットされることが多いです。ただし、クォータ制限の場合は毎日リセットされることもあります。正確なリセット時間はAPIのドキュメントを参照してください。

Q2. Power QueryでAPIリクエストを減らすために、キャッシュを利用できますか?
Power Query自体に標準のキャッシュ機能はありませんが、データを一度Excelのテーブルに保存してから別のクエリで参照する「データの読み込み」を活用することで、API呼び出し回数を減らせます。ただし、リアルタイム性が求められる場合は注意が必要です。

Q3. エラーメッセージに「429」と表示されていても、API制限以外の可能性はありますか?
HTTP 429は通常「リクエストが多すぎる」を意味しますが、稀にプロキシサーバーが独自の制限をかけている場合もあります。その場合は、プロキシを経由せずに直接APIにアクセスできるか管理者に確認してください。

Q4. 複数のクエリで同じAPIを呼び出している場合、制限はクエリごとにかかりますか?
APIの制限は、通常はアプリケーション(クライアントID)またはユーザーアカウント単位で適用されます。そのため、同じアカウントで複数のクエリを同時に実行すると、合計の呼び出し数が制限にカウントされます。可能であれば、一つのクエリに統合するか、異なるアカウントを使用する方法を検討します。

まとめ

Power Queryの更新がAPI制限で止まった場合、まずはエラーメッセージを確認し、HTTP 429や「Too Many Requests」の有無をチェックしてください。制限が原因と特定できたら、クエリの呼び出し回数を減らす工夫(逐次化、フィルターの最適化、更新頻度の低下)を行うことで改善できます。組織全体の設定に関わる場合は、管理者に使用量の確認や設定変更を依頼しましょう。日頃からAPIのドキュメントを確認し、制限値を把握しておくことが再発防止につながります。


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

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

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

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

ADVERTISEMENT