エラーの原因としては、環境設定の誤り、ソフトウェアのバグ、ユーザーからの無効な入力などが考えられます。いずれにしても、そのエラーの原因を突き止めて、コードを修正したり、ユーザーによるエラーを処理するロジックを追加したりする必要があります。このガイドでは、Google Ads API からのエラーのトラブルシューティングを行う際のベスト プラクティスについて説明します。
接続を確認する
Google Ads API にアクセスできるようにし、正しい設定を行ってください。レスポンスから HTTP エラーが返された場合は、それらに慎重に対処し、使用する予定のサービスにご自身のコードからアクセスしていることを確認してください。
サービスで認証を受けるために、認証情報がリクエストに埋め込まれています。特にクライアント ライブラリを使用せずに呼び出しを処理する場合は、Google Ads API のリクエストとレスポンスの構造をよく理解してください。各クライアント ライブラリには、設定ファイルに認証情報を含める方法に関する指示が準備されています(クライアント ライブラリの README を参照してください)。
正しい認証情報を使用してください。クイック スタートガイドでは、必要なセットを正しく取得する手順について説明しています。たとえば、次のレスポンスの失敗は、ユーザーが無効な認証情報を送信したことを示しています。
{ "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 }
]
}
}
]
}
すべてのクライアント ライブラリは、レスポンスのエラーをカプセル化する例外をスローします。これらの例外をキャプチャして、ログまたはトラブルシューティング画面にメッセージを出力することから始めることをおすすめします。この情報をアプリの他のログイベントと統合すると、問題の原因となっている可能性のあるものを把握できます。ログでエラーを特定したら、その意味を理解する必要があります。
エラーを調査する
最も頻繁に発生するエラーについては、一般的なエラーのドキュメントをご覧ください。エラー メッセージ、関連する API リファレンス、エラーを回避または処理する方法について説明します。
一般的なエラーに関するドキュメントにエラーが記載されていない場合は、リファレンス ドキュメントを参照して、エラー文字列を探してください。
サポート チャネルを検索して、API の使用経験を共有している他のデベロッパーにアクセスしてください。他のユーザーが同じ問題に遭遇し、解決している可能性があります。
検証やアカウントの上限に関する問題のトラブルシューティングについては、Google 広告ヘルプセンターをご覧ください。Google Ads API は、Google 広告のコアプロダクトのルールと制限を継承します。
ブログ投稿は、アプリケーションのトラブルシューティングを行う際に参考になることがあります。
ドキュメントに記載されていないエラーが発生した場合は、サポートにお問い合わせください。
エラーを調査したら、根本原因を特定します。
原因を特定する
例外メッセージを調べて、エラーの原因を調べます。レスポンスを確認してから、リクエストを調べて、考えられる原因を探します。一部の 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 デベロッパー リレーションズ チームのメンバーがリクエストを見つけることができます。レスポンス ヘッダーに含まれるrequest-id、またはレスポンス エラーをカプセル化する例外と、request-id単独よりも多くのコンテキストをロギングすることをおすすめします。- ランタイムやインタープリタのバージョン、プラットフォームなどの追加情報も、トラブルシューティングに役立ちます。
問題を解決する
問題を特定でき、解決方法が判明したら、実際に修正を加えて修正箇所をテストします。このとき、できればテスト アカウントを使用することをおすすめします。ただし、特定の本番用アカウントのデータにのみ起こるバグの場合には、本番環境でテストする必要があります。
次のステップ
問題の解決の過程で、コードを改良して問題の発生を未然に防ぐ方法がみつかる場合があります。
適切な単体テストを作成すると、コードの品質と信頼性が大幅に向上します。また、新しい変更をもすぐにテストできるため、以前の機能を壊すことがありません。優れたエラー処理戦略も、トラブルシューティングに必要なすべてのデータを取得するうえで重要です。