एपीआई की गड़बड़ियों को ठीक करें

Google Ads API को अनुरोध भेजने पर, कई वजहों से गड़बड़ी हो सकती है. उदाहरण के लिए, हो सकता है कि आपने कोई अमान्य आर्ग्युमेंट दिया हो या आपके खाते में नए कैंपेन बनाने की सीमा पूरी हो गई हो. ऐसे मामलों में, एपीआई गड़बड़ी का मैसेज दिखाता है, ताकि आपको पता चल सके कि क्या गड़बड़ी हुई है.

इस गाइड में, एपीआई की गड़बड़ियों को पढ़ने और उन्हें ठीक करने का तरीका बताया गया है. इससे आपको ज़्यादा मज़बूत ऐप्लिकेशन बनाने में मदद मिलेगी.

गड़बड़ी का स्ट्रक्चर

अगर हमारी किसी क्लाइंट लाइब्रेरी का इस्तेमाल किया जा रहा है, तो एपीआई की गड़बड़ियां अपवाद के तौर पर दिखती हैं. इन अपवादों में ऐसी जानकारी होती है जिससे आपको यह समझने में मदद मिलती है कि गड़बड़ी क्यों हुई.

Google Ads API, गड़बड़ी की जानकारी स्टैंडर्ड फ़ॉर्मैट में दिखाता है. अगर कोई गड़बड़ी होती है, तो जवाब में GoogleAdsFailure ऑब्जेक्ट शामिल होगा. इस ऑब्जेक्ट में, व्यक्तिगत GoogleAdsError ऑब्जेक्ट की सूची होती है. इनमें से हर ऑब्जेक्ट में, किसी खास गड़बड़ी के बारे में जानकारी होती है.

हर GoogleAdsError ऑब्जेक्ट में ये जानकारी होती है:

  • error_code: यह एक खास गड़बड़ी कोड होता है. इससे आपको गड़बड़ी के टाइप के बारे में पता चलता है. जैसे AuthenticationError.NOT_ADS_USER.
  • message: यह गड़बड़ी होने की वजह के बारे में, आसानी से समझ में आने वाली जानकारी होती है.
  • trigger: यह वह वैल्यू होती है जिसकी वजह से गड़बड़ी हुई है. जैसे, "1234".
  • location: इसमें यह जानकारी होती है कि अनुरोध के किस हिस्से में गड़बड़ी हुई है. जैसे, किसी फ़ील्ड का नाम.

गड़बड़ियों की सूची के अलावा, GoogleAdsFailure में requestId भी शामिल होता है. यह उस एपीआई अनुरोध का यूनीक आइडेंटिफ़ायर होता है जिसकी वजह से गड़बड़ी हुई है.

गड़बड़ी का उदाहरण

यहां JSON फ़ॉर्मैट में गड़बड़ी का एक उदाहरण दिया गया है. इस गड़बड़ी से पता चलता है कि अनुरोध में, इंडेक्स 0 पर मौजूद ad_group का name फ़ील्ड मौजूद नहीं है.

{
  "code": 3,
  "message": "Request contains an invalid argument.",
  "details": [
    {
      "@type": "type.googleapis.com/google.ads.googleads.v25.errors.GoogleAdsFailure",
      "errors": [
        {
          "errorCode": {
            "requestError": "REQUIRED_FIELD_MISSING"
          },
          "message": "Required field is missing",
          "location": {
            "fieldPathElements": [
              {
                "fieldName": "ad_group",
                "index": 0
              },
              {
                "fieldName": "name"
              }
            ]
          }
        }
      ],
      "requestId": "unique_request_id_12345"
    }
  ]
}

एपीआई की गड़बड़ियों के बारे में ज़्यादा जानने के लिए, हमारी गाइड देखें.

क्लाइंट लाइब्रेरी के उदाहरण

इस सेक्शन में, अलग-अलग क्लाइंट लाइब्रेरी में गड़बड़ियों को ठीक करने का तरीका बताया गया है.

Java

try {
  // Make an API call.
  ...
} catch (GoogleAdsException gae) {
  // GoogleAdsException is the base class for most exceptions thrown by an API request.
  // Instances of this exception have a message and a GoogleAdsFailure that contains a
  // collection of GoogleAdsErrors that indicate the underlying causes of the
  // GoogleAdsException.
  System.err.printf(
      "Request ID %s failed due to GoogleAdsException. Underlying errors:%n",
      gae.getRequestId());
  int i = 0;
  for (GoogleAdsError googleAdsError : gae.getGoogleAdsFailure().getErrorsList()) {
    System.err.printf("  Error %d: %s%n", i++, googleAdsError);
  }
}

C#

try
{
    // Make an API call.
    ...
}
catch (GoogleAdsException e)
{
    Console.WriteLine($"Request with ID '{e.RequestId}' has failed.");
    Console.WriteLine("Google Ads failure details:");

    foreach (GoogleAdsError error in e.Failure.Errors)
    {
        Console.WriteLine($"{error.ErrorCode}: {error.Message}");
    }
}

PHP

try {
  // Make an API call.
  ...
} catch (GoogleAdsException $googleAdsException) {
    printf(
        "Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
        $googleAdsException->getRequestId(),
        PHP_EOL,
        PHP_EOL
    );
    foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) {
        /** @var GoogleAdsError $error */
        printf(
            "\t%s: %s%s",
            $error->getErrorCode()->getErrorCode(),
            $error->getMessage(),
            PHP_EOL
        );
    }
}

Python

try:
    # Make an API call.
    ...
except GoogleAdsException as ex:
    print(
        f"Request with ID '{ex.request_id}' failed with status "
        f"'{ex.error.code().name}' and includes the following errors:"
    )
    for error in ex.failure.errors:
        print(f"\tError with message '{error.message}' and code '{error.error_code}'.")

Ruby

begin
    # Make an API call.
    ...
rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
    puts "API call failed with request ID: #{e.request_id}"
    e.failure.errors.each do |error|
        puts "\t#{error.error_code}: #{error.message}"
    end
end

Perl

# Try sending a mutate request to add the ad group ad.
...
if ($response->isa("Google::Ads::GoogleAds::GoogleAdsException")) {
  printf "Google Ads failure details:\n";
  foreach my $error (@{$response->get_google_ads_failure()->{errors}}) {
    printf "\t%s: %s\n", [keys %{$error->{errorCode}}]->[0], $error->{message};
  }
}

लॉग कैसे कैप्चर करें

गड़बड़ियों को ठीक करने के लिए, Google Ads API सर्वर से मिले गड़बड़ी के लॉग कैप्चर करें और उनका कॉन्टेंट देखें. लॉगिंग की सुविधा चालू करने और एपीआई लॉग कैप्चर करने के लिए, यहां दिया गया तरीका अपनाएं.

Java

निर्देशों के लिए, Java क्लाइंट लाइब्रेरी की लॉगिंग गाइड देखें.

C#

लॉगिंग की सुविधा को शुरू करने के लिए, एपीआई कॉल करने से पहले, अपने Main तरीके में यह लाइन जोड़ें. इससे यह पक्का होता है कि लाइब्रेरी, आपके ऐप्लिकेशन से किए गए सभी एपीआई कॉल के लिए लॉग जनरेट करे.

using Google.Ads.GoogleAds.Util;
...

// Detailed logs.
TraceUtilities.Configure(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE,
    "/path/to/your/logs/details.log", System.Diagnostics.SourceLevels.All);

// Summary logs.
TraceUtilities.Configure(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE,
    "/path/to/your/logs/summary.log", System.Diagnostics.SourceLevels.All);

ज़्यादा विकल्पों के लिए, .NET लाइब्रेरी की लॉगिंग गाइड देखें.

PHP

क्लाइंट लाइब्रेरी की google_ads_php.ini फ़ाइल में, लॉगिंग कॉन्फ़िगरेशन सेट किया जा सकता है. गड़बड़ी के लॉग की पूरी जानकारी कैप्चर करने के लिए, logLevel को NOTICE पर सेट करें.

[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"

निर्देशों के लिए, PHP क्लाइंट लाइब्रेरी लॉगिंग गाइड देखें.

Python

क्लाइंट लाइब्रेरी की google-ads.yaml फ़ाइल में, लॉगिंग कॉन्फ़िगरेशन सेट किया जा सकता है. गड़बड़ी के लॉग की पूरी जानकारी कैप्चर करने के लिए, लॉगिंग लेवल को DEBUG पर सेट करें.

ज़्यादा विकल्पों के लिए, Python लाइब्रेरी की लॉगिंग गाइड देखें.

Ruby

क्लाइंट लाइब्रेरी की google_ads_config.rb फ़ाइल में, लॉगिंग कॉन्फ़िगरेशन सेट किया जा सकता है. गड़बड़ी के लॉग की पूरी जानकारी कैप्चर करने के लिए, लॉगिंग लेवल को INFO पर सेट करें.

ज़्यादा विकल्पों के लिए, Ruby लाइब्रेरी की लॉगिंग गाइड देखें.

Perl

लॉगिंग की सुविधा को शुरू करने के लिए, एपीआई कॉल करने से पहले, अपने Perl स्क्रिप्ट में यह लाइन जोड़ें.

Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();

ज़्यादा विकल्पों के लिए, Perl लाइब्रेरी की लॉगिंग गाइड देखें.

curl

curl, डिफ़ॉल्ट रूप से stderr पर, गड़बड़ी वाले जवाब प्रिंट करता है.

गड़बड़ियों को ठीक करने का तरीका

अगर आपको कोई गड़बड़ी दिखती है, तो यह तरीका अपनाएं:

  1. अपवाद को पकड़ें और लॉग कैप्चर करें: सबसे पहले, अपवादों को पकड़ें. इसके बाद, एपीआई लॉग कैप्चर करें. हालांकि, यह ज़रूरी नहीं है.
  2. `errors` सूची की जांच करें: errors GoogleAdsError ऑब्जेक्ट में मौजूद हर GoogleAdsFailure को देखें. The error_code और message से आपको पता चलेगा कि क्या गड़बड़ी हुई है.
  3. location वैल्यू देखें: location फ़ील्ड की मदद से, यह पता लगाया जा सकता है कि आपके अनुरोध में कहां गड़बड़ी हुई है.
  4. दस्तावेज़ देखें: गड़बड़ी के खास कोड के लिए, सामान्य गड़बड़ियां वाला पेज या गड़बड़ी के कोड के रेफ़रंस की पूरी जानकारी देखें. इससे आपको गड़बड़ी के बारे में ज़्यादा जानकारी मिलेगी और उसे ठीक करने का तरीका पता चलेगा.
  5. अपने अनुरोध में बदलाव करें: गड़बड़ी के मैसेज के आधार पर, अपने एपीआई अनुरोध को ठीक करें. उदाहरण के लिए, अगर आपको REQUIRED_FIELD_MISSING दिखता है, तो पक्का करें कि आपने अपने अनुरोध में वह फ़ील्ड शामिल किया हो.
  6. लॉग करें request_id: अगर आपको यह पता नहीं चल पा रहा है कि गड़बड़ी को कैसे ठीक किया जाए और आपको सहायता टीम से संपर्क करना है, तो गड़बड़ी वाले अनुरोध के लिए, अनुरोध और जवाब के पूरे लॉग शामिल करें. पक्का करें कि आपने request_id शामिल किया हो. इस आईडी की मदद से, Google के इंजीनियर, Google Ads API सर्वर के लॉग में गड़बड़ी वाले अनुरोध की जानकारी ढूंढ पाते हैं और आपकी समस्या की जांच कर पाते हैं.

अगले चरण