Google Ads API-তে, আপনি বৈধ ক্রিয়াকলাপগুলি সম্পন্ন করার অনুরোধ করতে পারেন এবং ব্যর্থগুলি ত্রুটিগুলি ফিরিয়ে আনতে পারেন। এই বৈশিষ্ট্যটি - যাকে আংশিক ব্যর্থতা বলা হয় - আপনাকে শেষে ব্যর্থ ক্রিয়াকলাপগুলি আলাদাভাবে পরিচালনা করতে দেয়। এটি অনেক Google Ads API পরিষেবার নন-গেট পদ্ধতিতে উপলব্ধ।
প্রযুক্তিগত বিবরণ
এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনি যে পদ্ধতিটি ব্যবহার করতে চান তার partialFailure প্যারামিটার সেট করুন। প্রতিটি ক্লায়েন্ট লাইব্রেরিতে এটি কিছুটা আলাদা হতে পারে। উদাহরণস্বরূপ, MutateAdGroups ব্যবহার করে অনুরোধ পাঠানোর সময় এই বৈশিষ্ট্যটি চালু করতে নিম্নলিখিতগুলি করুন:
জাভা
mutateAdGroups(String.valueOf(customerId), operations, true)
সি#
MutateAdGroups(customerId.ToString(), operations, true, false)
পিএইচপি
mutateAdGroups($customerId, $operations, ['partialFailure' => true])পাইথন
mutate_ad_groups(customer_id, operations, partial_failure=True)
রুবি
mutate_ad_groups(customer_id, operations, partial_failure: true)
পার্ল
mutate({customerId => $customer_id, operations => $operations, partialFailure => 'true'})
এই পরিষেবাটি এমন ক্রিয়াকলাপ সম্পাদন করবে যাতে কোনও ত্রুটি ছিল না। এটি সফল ক্রিয়াকলাপের ফলাফল এবং ব্যর্থ ক্রিয়াকলাপের ত্রুটির ফলাফল প্রদান করবে।
ব্যবহার
ধরুন আপনার অ্যাকাউন্টে কিছু বিজ্ঞাপন গ্রুপ যোগ করতে হবে, কিন্তু কিছু বিজ্ঞাপন গ্রুপের কিছু সমস্যা হতে পারে। আপনি বৈধ বিজ্ঞাপন গ্রুপ তৈরি করতে চান, কিন্তু ব্যর্থ বিজ্ঞাপন গ্রুপগুলি তাদের ত্রুটি সহ ফিরে এসেছে।
কখন আংশিক ব্যর্থতা এড়াতে হবে
আন্তঃনির্ভরশীল ক্রিয়াকলাপ সহ অনুরোধগুলির জন্য আপনার আংশিক ব্যর্থতা ব্যবহার করা উচিত নয়।
উদাহরণস্বরূপ, যদি আপনি এমন একটি জটিল সত্তা তৈরি করেন যার জন্য একটি একক অনুরোধে একাধিক সংস্থান তৈরি করতে হয়, যেমন একটি পারফরম্যান্স ম্যাক্স প্রচারণা, তাহলে আপনার আংশিক ব্যর্থতা ব্যবহার করা উচিত নয়। একটি পারফরম্যান্স ম্যাক্স প্রচারণার প্রাথমিক তৈরির জন্য একই অনুরোধে Campaign এবং CampaignAsset সংস্থান তৈরি করতে হবে। যদি Campaign তৈরি ব্যর্থ হয়, তাহলে CampaignAsset তৈরিও ব্যর্থ হবে এবং আপনার অনুরোধটিকে একটি একক পারমাণবিক ব্যর্থতা হিসাবে বিবেচনা করা উচিত।
আরেকটি উদাহরণ হিসেবে, যখন আপনি প্রথমে কোনও AssetGroup এ প্রয়োজনীয় সম্পদ যোগ করবেন তখন "partial failure" ব্যবহার করবেন না। কোনও সম্পদ ছাড়াই বা সমস্ত প্রয়োজনীয় সম্পদ সহ সম্পদ গোষ্ঠী তৈরি করা যেতে পারে। প্রথমবার সম্পদ গোষ্ঠীতে সম্পদ যোগ করার সময়, আপনি আলাদা অনুরোধে একবারে সেগুলি যোগ করতে পারবেন না। আপনাকে অবশ্যই সেগুলিকে একটি অনুরোধে অন্তর্ভুক্ত করতে হবে এবং আপনার "partial failure" ব্যবহার করা উচিত নয়। সম্পদ গোষ্ঠীতে সমস্ত প্রয়োজনীয় সম্পদ থাকার পরে, আপনি একবারে একটি করে সম্পদ যোগ করতে বা অপসারণ করতে পারেন এবং সেই অনুরোধগুলি "partial failure" ব্যবহার করতে পারে ।
আংশিক ব্যর্থতা উপযুক্ত কিনা তা নির্ধারণ করতে, একই অনুরোধের মধ্যে ক্রস-অপারেশন রিসোর্স রেফারেন্সিংয়ের জন্য একটি অস্থায়ী আইডি প্রয়োজন কিনা তা পরীক্ষা করুন। যদি তাই হয়, তাহলে আপনার আংশিক ব্যর্থতা ব্যবহার করা উচিত নয়, কারণ দ্বিতীয় অপারেশনের সাফল্য প্রথমটির সাফল্যের উপর নির্ভরশীল।
অপারেশন তৈরি করুন এবং API কল করুন
মিউটেট অপারেশন তৈরি করুন এবং যথারীতি API কল করুন।
জাভা
private MutateAdGroupsResponse createAdGroups( GoogleAdsClient googleAdsClient, long customerId, long campaignId) { // This AdGroup should be created successfully - assuming the campaign in the params exists. AdGroup group1 = AdGroup.newBuilder() .setCampaign(ResourceNames.campaign(customerId, campaignId)) .setName("Valid AdGroup: " + getPrintableDateTime()) .build(); // This AdGroup will always fail - campaign ID 0 in resource names is never valid. AdGroup group2 = AdGroup.newBuilder() .setCampaign(ResourceNames.campaign(customerId, 0L)) .setName("Broken AdGroup: " + getPrintableDateTime()) .build(); // This AdGroup will always fail - duplicate ad group names are not allowed. AdGroup group3 = AdGroup.newBuilder() .setCampaign(ResourceNames.campaign(customerId, campaignId)) .setName(group1.getName()) .build(); AdGroupOperation op1 = AdGroupOperation.newBuilder().setCreate(group1).build(); AdGroupOperation op2 = AdGroupOperation.newBuilder().setCreate(group2).build(); AdGroupOperation op3 = AdGroupOperation.newBuilder().setCreate(group3).build(); try (AdGroupServiceClient service = googleAdsClient.getLatestVersion().createAdGroupServiceClient()) { // Issues the mutate request, setting partialFailure=true. return service.mutateAdGroups( MutateAdGroupsRequest.newBuilder() .setCustomerId(String.valueOf(customerId)) .setCustomerId(Long.toString(customerId)) .addAllOperations(Arrays.asList(op1, op2, op3)) .setPartialFailure(true) .build()); } }
সি#
private static MutateAdGroupsResponse CreateAdGroups(GoogleAdsClient client, long customerId, long campaignId) { // Get the AdGroupServiceClient. AdGroupServiceClient adGroupService = client.GetService(Services.V22.AdGroupService); string validAdGroupName = "Valid AdGroup: " + ExampleUtilities.GetRandomString(); AdGroupOperation[] operations = new AdGroupOperation[] { // This operation will be successful, assuming the campaign specified in // campaignId parameter is correct. new AdGroupOperation() { Create = new AdGroup() { Campaign = ResourceNames.Campaign(customerId, campaignId), Name = validAdGroupName } }, // This operation will fail since we are using campaign ID = 0, which results // in an invalid resource name. new AdGroupOperation() { Create = new AdGroup() { Campaign = ResourceNames.Campaign(customerId, 0), Name = "Broken AdGroup: " + ExampleUtilities.GetRandomString() }, }, // This operation will fail since the ad group is using the same name as the ad // group from the first operation. Duplicate ad group names are not allowed. new AdGroupOperation() { Create = new AdGroup() { Campaign = ResourceNames.Campaign(customerId, campaignId), Name = validAdGroupName } } }; // Add the ad groups. MutateAdGroupsResponse response = adGroupService.MutateAdGroups(new MutateAdGroupsRequest() { CustomerId = customerId.ToString(), Operations = { operations }, PartialFailure = true, ValidateOnly = false }); return response; }
পিএইচপি
private static function createAdGroups( GoogleAdsClient $googleAdsClient, int $customerId, int $campaignId ) { $campaignResourceName = ResourceNames::forCampaign($customerId, $campaignId); // This ad group should be created successfully - assuming the campaign in the params // exists. $adGroup1 = new AdGroup([ 'name' => 'Valid AdGroup #' . Helper::getPrintableDatetime(), 'campaign' => $campaignResourceName ]); // This ad group will always fail - campaign ID 0 in the resource name is never valid. $adGroup2 = new AdGroup([ 'name' => 'Broken AdGroup #' . Helper::getPrintableDatetime(), 'campaign' => ResourceNames::forCampaign($customerId, 0) ]); // This ad group will always fail - duplicate ad group names are not allowed. $adGroup3 = new AdGroup([ 'name' => $adGroup1->getName(), 'campaign' => $campaignResourceName ]); $operations = []; $adGroupOperation1 = new AdGroupOperation(); $adGroupOperation1->setCreate($adGroup1); $operations[] = $adGroupOperation1; $adGroupOperation2 = new AdGroupOperation(); $adGroupOperation2->setCreate($adGroup2); $operations[] = $adGroupOperation2; $adGroupOperation3 = new AdGroupOperation(); $adGroupOperation3->setCreate($adGroup3); $operations[] = $adGroupOperation3; // Issues the mutate request, enabling partial failure mode. $adGroupServiceClient = $googleAdsClient->getAdGroupServiceClient(); return $adGroupServiceClient->mutateAdGroups( MutateAdGroupsRequest::build($customerId, $operations)->setPartialFailure(true) ); }