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.v22.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
लॉगिंग शुरू करने के लिए, एपीआई कॉल करने से पहले अपनी पर्ल स्क्रिप्ट में यह लाइन जोड़ें.
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
ज़्यादा विकल्पों के लिए, Perl लाइब्रेरी की लॉगिंग गाइड देखें.
curl
curl, stderr से मिले जवाबों को डिफ़ॉल्ट रूप से प्रिंट करता है.
गड़बड़ियों को ठीक करने का तरीका
अगर आपको कोई गड़बड़ी दिखती है, तो यह तरीका अपनाएं:
- अपवाद को पकड़ें और लॉग कैप्चर करें: सबसे पहले, अपवादों को पकड़ें और चाहें, तो एपीआई लॉग कैप्चर करें.
errorsसूची की जांच करें:GoogleAdsFailureऑब्जेक्ट में मौजूद हरGoogleAdsErrorको देखें.error_codeऔरmessageसे आपको पता चलेगा कि क्या गड़बड़ी हुई है.locationवैल्यू की जांच करें:locationफ़ील्ड की मदद से, यह पता लगाया जा सकता है कि आपके अनुरोध में समस्या कहां हुई है.- दस्तावेज़ देखें: गड़बड़ी के किसी खास कोड के बारे में ज़्यादा जानने और उसे ठीक करने का तरीका जानने के लिए, आम तौर पर होने वाली गड़बड़ियों वाला पेज या गड़बड़ी के कोड का पूरा रेफ़रंस देखें.
- अनुरोध में बदलाव करना: गड़बड़ी के मैसेज के आधार पर, अपने एपीआई अनुरोध को ठीक करें. उदाहरण के लिए, अगर आपको
REQUIRED_FIELD_MISSINGदिखता है, तो पक्का करें कि आपने अपने अनुरोध में वह फ़ील्ड दिया हो. request_idलॉग करें: अगर आपको किसी गड़बड़ी को ठीक करने का तरीका नहीं मिल रहा है और आपको सहायता टीम से संपर्क करना है, तो गड़बड़ी वाले अनुरोध के लिए अनुरोध और जवाब के पूरे लॉग शामिल करें.request_idको शामिल करना न भूलें. इस आईडी की मदद से, Google के इंजीनियर Google Ads API सर्वर के लॉग में, अनुरोध से जुड़ी जानकारी ढूंढ पाते हैं. इससे उन्हें आपकी समस्या की जांच करने में मदद मिलती है.
अगले चरण
- अक्सर आने वाली समस्याओं और उन्हें हल करने के तरीकों की सूची देखने के लिए, सामान्य गड़बड़ियां देखें.
- गड़बड़ी ठीक करने की ज़्यादा बेहतर तकनीकों के बारे में जानने के लिए, एपीआई से जुड़ी गड़बड़ियों के बारे में जानें लेख पढ़ें. इसमें बार-बार कोशिश करने का लॉजिक और कुछ हद तक गड़बड़ी ठीक होने की जानकारी शामिल है.