যখন আপনি Google Ads API-তে একটি অনুরোধ পাঠান, তখন এটি বিভিন্ন কারণে ব্যর্থ হতে পারে। উদাহরণস্বরূপ, আপনি একটি অবৈধ যুক্তি প্রদান করতে পারেন, অথবা আপনার অ্যাকাউন্ট নতুন প্রচারাভিযান তৈরির সীমাতে পৌঁছে যেতে পারে। এই ধরনের ক্ষেত্রে, API একটি ত্রুটি ফেরত দেয় যাতে আপনাকে জানাতে পারে যে কী ভুল হয়েছে।
এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে API ত্রুটিগুলি পড়তে হয় এবং পরিচালনা করতে হয় যাতে আপনি আরও শক্তিশালী অ্যাপ্লিকেশন তৈরি করতে পারেন।
ত্রুটি কাঠামো
আপনি যদি আমাদের ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, তাহলে API ত্রুটিগুলি ব্যতিক্রম হিসেবে দেখা হবে। এই ব্যতিক্রমগুলিতে এমন বিশদ বিবরণ রয়েছে যা আপনাকে বুঝতে সাহায্য করবে যে ত্রুটিটি কেন ঘটেছে।
Google Ads API একটি স্ট্যান্ডার্ড ফর্ম্যাটে ত্রুটির তথ্য প্রদান করে। যদি কোনও ত্রুটি দেখা দেয়, তাহলে প্রতিক্রিয়ায় একটি GoogleAdsFailure অবজেক্ট থাকবে। এই অবজেক্টে পৃথক GoogleAdsError অবজেক্টের একটি তালিকা রয়েছে, প্রতিটিতে একটি নির্দিষ্ট ত্রুটির বিবরণ রয়েছে।
প্রতিটি GoogleAdsError অবজেক্টে নিম্নলিখিতগুলি থাকে:
-
error_code: একটি নির্দিষ্ট ত্রুটি কোড যা আপনাকে ত্রুটির ধরণ বলে, যেমনAuthenticationError.NOT_ADS_USER। -
message: ত্রুটিটি কেন ঘটেছে তার একটি মানুষের পাঠযোগ্য বর্ণনা। -
trigger: যে মানটি ত্রুটির কারণ হয়েছে, যেমন "১২৩৪"। -
location: অনুরোধের কোন অংশে ত্রুটি ঘটেছে তার বিশদ বিবরণ, যেমন একটি নির্দিষ্ট ক্ষেত্রের নাম।
ত্রুটির তালিকা ছাড়াও, GoogleAdsFailure একটি requestId থাকে, যা ত্রুটির ফলে তৈরি হওয়া API অনুরোধের জন্য একটি অনন্য শনাক্তকারী।
উদাহরণ ত্রুটি
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"
}
]
}
API ত্রুটি সম্পর্কে আরও জানতে আমাদের নির্দেশিকাটি পড়ুন।
ক্লায়েন্ট লাইব্রেরির উদাহরণ
নিম্নলিখিত বিভাগে বিভিন্ন ক্লায়েন্ট লাইব্রেরিতে ত্রুটিগুলি কীভাবে পরিচালনা করতে হয় তা দেখানো হয়েছে।
জাভা
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);
}
}
সি#
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}");
}
}
পিএইচপি
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
);
}
}
পাইথন
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}'.")
রুবি
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
পার্ল
# 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 সার্ভার থেকে ফেরত আসা ত্রুটি লগগুলি ক্যাপচার করুন এবং তাদের বিষয়বস্তু পরীক্ষা করুন। লগিং সক্ষম করতে এবং API লগগুলি ক্যাপচার করতে নিম্নলিখিত নির্দেশাবলী ব্যবহার করুন।
জাভা
নির্দেশাবলীর জন্য জাভা ক্লায়েন্ট লাইব্রেরি লগিং গাইড দেখুন।
সি#
আপনি যেকোনো API কল করার আগে আপনার Main পদ্ধতিতে নিম্নলিখিত লাইনটি যোগ করে লগিং শুরু করতে পারেন। এটি নিশ্চিত করে যে সমস্ত লাইব্রেরি আপনার অ্যাপ্লিকেশন দ্বারা করা সমস্ত API কলের জন্য লগ তৈরি করে।
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 লাইব্রেরি লগিং গাইড দেখুন।
পিএইচপি
আপনি আপনার ক্লায়েন্ট লাইব্রেরির google_ads_php.ini ফাইলে লগিং কনফিগারেশন সেট করতে পারেন। বিস্তারিত ত্রুটি লগ ক্যাপচার শুরু করতে logLevel কে NOTICE এ সেট করুন।
[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"
নির্দেশাবলীর জন্য PHP ক্লায়েন্ট লাইব্রেরি লগিং গাইড দেখুন।
পাইথন
আপনি আপনার ক্লায়েন্ট লাইব্রেরির google-ads.yaml ফাইলে লগিং কনফিগারেশন সেট করতে পারেন। বিস্তারিত ত্রুটি লগ ক্যাপচার শুরু করতে লগিং লেভেল DEBUG এ সেট করুন।
অতিরিক্ত বিকল্পের জন্য পাইথন লাইব্রেরি লগিং গাইড দেখুন।
রুবি
আপনি আপনার ক্লায়েন্ট লাইব্রেরির google_ads_config.rb ফাইলে লগিং কনফিগারেশন সেট করতে পারেন। বিস্তারিত ত্রুটি লগ ক্যাপচার শুরু করতে লগিং লেভেল INFO তে সেট করুন।
অতিরিক্ত বিকল্পের জন্য রুবি লাইব্রেরি লগিং গাইড দেখুন।
পার্ল
লগিং শুরু করতে, যেকোনো API কল করার আগে আপনার পার্ল স্ক্রিপ্টে নিম্নলিখিত লাইনটি যোগ করুন।
Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();
অতিরিক্ত বিকল্পের জন্য পার্ল লাইব্রেরি লগিং গাইড দেখুন।
কার্ল করা
curl ডিফল্টরূপে stderr এর ব্যর্থ প্রতিক্রিয়াগুলি প্রিন্ট করে।
ত্রুটিগুলি কীভাবে পরিচালনা করবেন
যদি আপনি কোনও ত্রুটির সম্মুখীন হন, তাহলে এখানে পদক্ষেপগুলি নেওয়া হল:
- ব্যতিক্রমগুলি ধরুন এবং লগগুলি ক্যাপচার করুন : ব্যতিক্রমগুলি ধরুন এবং ঐচ্ছিকভাবে API লগগুলি ক্যাপচার করে শুরু করুন।
-
errorsতালিকা পরীক্ষা করুন :GoogleAdsFailureঅবজেক্টের প্রতিটিGoogleAdsErrorদেখুন।error_codeএবংmessageআপনাকে বলবে কী ভুল হয়েছে। -
locationমান পরীক্ষা করুন :locationক্ষেত্রটি আপনার অনুরোধে কোথায় সমস্যাটি ঘটেছে তা চিহ্নিত করতে সাহায্য করতে পারে। - ডকুমেন্টেশন দেখুন : নির্দিষ্ট ত্রুটি কোডের জন্য, ত্রুটি এবং এটি কীভাবে ঠিক করবেন সে সম্পর্কে আরও বিস্তারিত জানার জন্য সাধারণ ত্রুটি পৃষ্ঠা অথবা সম্পূর্ণ ত্রুটি কোড রেফারেন্সটি দেখুন।
- আপনার অনুরোধটি সামঞ্জস্য করুন : ত্রুটি বার্তার উপর ভিত্তি করে, আপনার API অনুরোধটি সংশোধন করুন। উদাহরণস্বরূপ, যদি আপনি
REQUIRED_FIELD_MISSINGদেখতে পান, তাহলে নিশ্চিত করুন যে আপনি আপনার অনুরোধে সেই ক্ষেত্রটি দিয়েছেন। -
request_idলগ করুন : যদি আপনি কোনও ত্রুটি কীভাবে সমাধান করবেন তা বুঝতে না পারেন এবং সহায়তার সাথে যোগাযোগ করতে চান), তাহলে ব্যর্থ অনুরোধের জন্য সম্পূর্ণ অনুরোধ এবং প্রতিক্রিয়া লগ অন্তর্ভুক্ত করুন।request_idঅন্তর্ভুক্ত করতে ভুলবেন না। এই আইডিটি Google ইঞ্জিনিয়ারদের Google Ads API সার্ভার লগে ব্যর্থ অনুরোধের বিবরণ সনাক্ত করতে এবং আপনার সমস্যাটি তদন্ত করতে সহায়তা করে।
পরবর্তী পদক্ষেপ
- ঘন ঘন সমস্যা এবং তাদের সমাধানের তালিকার জন্য সাধারণ ত্রুটিগুলি পর্যালোচনা করুন।
- আরও উন্নত ত্রুটি পরিচালনার কৌশলগুলির জন্য, যার মধ্যে রয়েছে পুনঃপ্রয়াস লজিক এবং আংশিক ব্যর্থতা, API ত্রুটিগুলি বুঝুন দেখুন।