トラブルシューティング

エラーは、環境設定の誤り、ソフトウェアのバグ、ユーザーからの無効な入力などが原因で発生することがあります。ソースに関係なく、問題のトラブルシューティングを行い、コードを修正するか、ユーザーエラーを処理するロジックを追加する必要があります。このガイドでは、Google Ads API のエラーをトラブルシューティングする際のベスト プラクティスについて説明します。

接続を確認する

  1. Google Ads API にアクセスできるようにし、正しい設定を行ってください。レスポンスから HTTP エラーが返された場合は、それらに慎重に対処し、使用する予定のサービスにご自身のコードからアクセスしていることを確認してください。

  2. サービスがユーザーを認証できるように、認証情報はリクエストに埋め込まれます。Google Ads API のリクエストとレスポンスの構造を理解します。特に、クライアント ライブラリを使用せずに呼び出しを処理する場合は、この構造を理解しておくことが重要です。各クライアント ライブラリには、構成ファイルに認証情報を含める方法に関する具体的な手順が付属しています(クライアント ライブラリの README をご覧ください)。

  3. 正しい認証情報を使用してください。クイックスタート ガイドでは、必要な正しいセットを取得するプロセスについて説明します。たとえば、次のレスポンス エラーは、ユーザーが無効な認証情報を送信したことを示しています。

    {
      "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "detail": "Authentication error: 2"
          }
        ]
      }
    }
    

上記の手順を行っても問題が解決しない場合は、Google Ads API のエラーのトラブルシューティングを行います。

問題を特定する

Google Ads API は通常、エラーを JSON 形式の失敗オブジェクトとして報告します。このオブジェクトには、レスポンス内のエラーのリストが含まれています。これらのオブジェクトは、エラーコードと、エラーが発生した理由を詳しく説明するメッセージを提供します。これらは、問題が何であるかを示す最初のシグナルです。

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword.match_type'.",
      "location": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 1 }
        ]
      }
    }
  ]
}

すべてのクライアント ライブラリは、レスポンスのエラーをカプセル化する例外をスローします。これらの例外をキャプチャして、ログまたはトラブルシューティング画面にメッセージを出力することをおすすめします。この情報をアプリケーションに記録された他のイベントと統合すると、問題の原因となっている可能性のある事象の概要を把握できます。ログでエラーを特定したら、その意味を把握する必要があります。

エラーを調査する

  1. 一般的なエラーのドキュメントをご覧ください。このドキュメントでは、最も頻繁に発生するエラーについて説明しています。エラー メッセージ、関連する API リファレンス、エラーの回避方法または処理方法について説明します。

  2. 一般的なエラーのドキュメントにエラーが明記されていない場合は、リファレンス ドキュメントを参照してエラー文字列を探してください。

  3. サポート チャンネルを検索して、API に関する経験を共有している他のデベロッパーにアクセスします。他のユーザーが、あなたが直面している問題に遭遇し、解決している可能性があります。

  4. 検証やアカウントの上限に関する問題のトラブルシューティングについては、Google 広告ヘルプセンターをご覧ください。Google Ads API は、Google 広告のコアサービスのルールと制限を継承しています。

  5. ブログ投稿は、アプリケーションのトラブルシューティングを行う際に役立つことがあります。

  6. ドキュメントに記載されていないエラーが発生した場合は、サポートにお問い合わせください。

エラーを調査したら、根本原因を特定します。

原因を特定する

例外メッセージを調べて、エラーの原因を調べます。レスポンスを確認してから、リクエストを調べて、考えられる原因を探します。一部の Google Ads API エラー メッセージには、GoogleAdsError の location フィールドに fieldPathElements が含まれており、リクエストのどこでエラーが発生したかを示しています。次に例を示します。

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 0 },
          { "fieldName": "create" },
          { "fieldName": "keyword" }
        ]
      }
    }
  ]
}

問題のトラブルシューティングを行う際に、アプリケーションが API に誤った情報を提供していることが判明する場合があります。統合開発環境(IDE)デバッガを使用して、ブレークポイントを設定し、コードを 1 行ずつステップ実行して、作成されたリクエスト ペイロードを送信前に検査することを強くおすすめします。

リクエストがアプリケーションの入力と一致していることを再確認します(たとえば、キャンペーンの名前がリクエストに反映されていない可能性があります)。Google Ads API はスパース更新をサポートしているため、更新内容に一致するフィールド マスクを送信してください。変更リクエストのフィールド マスクからフィールドを省略すると、API はそのフィールドをそのままにします。アプリケーションがオブジェクトを取得して変更を加え、それを送り返す場合、更新をサポートしていないフィールドに書き込んでいる可能性があります。リファレンス ドキュメントでフィールドの説明を確認し、フィールドを更新できるタイミングや更新できるかどうかに制限があるかどうかを確認します。

サポートの利用方法

ご自身で問題を特定して解決できるとは限りません。詳しくは、サポートまでお問い合わせください。

クエリにはできるだけ多くの情報を含めるようにしてください。推奨されるアイテムは次のとおりです。

  • 不要な情報を削除した JSON リクエストとレスポンス - OAuth アクセス トークン、更新トークン、お客様 ID などの機密情報は必ず削除してください。
  • コード スニペット - 言語固有の問題や API の操作についてのサポートを求めている場合は、コードのスニペットを提供すると、行おうとしていることの説明に役立ちます。
  • request-id。これにより、Google Developer Relations チームのメンバーは、本番環境に対して行われたリクエストを特定できます。レスポンス ヘッダーに含まれる request-id、またはレスポンス エラーをカプセル化する例外をロギングすることをおすすめします。また、request-id だけでなく、より多くのコンテキストをロギングすることをおすすめします。
  • ランタイムやインタープリタのバージョン、プラットフォームなどの追加情報も、トラブルシューティングに役立ちます。

問題を解決する

問題を特定でき、解決方法が判明したら、実際に修正を加えて修正箇所をテストします。このとき、できればテスト アカウントを使用することをおすすめします。ただし、特定の本番用アカウントのデータにのみ起こるバグの場合には、本番環境でテストする必要があります。

次のステップ

問題の解決の過程で、コードを改良して問題の発生を未然に防ぐ方法がみつかる場合があります。

適切な単体テストを作成すると、コードの品質と信頼性が大幅に向上します。また、新しい変更をもすぐにテストできるため、以前の機能を壊すことがありません。優れたエラー処理戦略は、トラブルシューティングに必要なすべてのデータを明らかにするうえでも重要です。