ক্ষেত্র হিসাবে খালি বার্তা অবজেক্ট সেট করা

Google Ads API-এ কিছু বার্তা ক্ষেত্রকে খালি মেসেজ অবজেক্ট হিসাবে সংজ্ঞায়িত করা হয়, যেমন campaign.manual_cpm , অথবা তাদের কেবলমাত্র ঐচ্ছিক ক্ষেত্র থাকতে পারে যেগুলি সেট করার প্রয়োজন নেই, উদাহরণস্বরূপ campaign.manual_cpc । প্রদত্ত প্রচারাভিযানের জন্য কোন বিডিং কৌশলটি ব্যবহার করতে হবে তা API-কে জানানোর জন্য এই ক্ষেত্রগুলি সেট করা গুরুত্বপূর্ণ, কিন্তু বার্তাগুলি খালি থাকলে তা স্বজ্ঞাত নয়৷

campaign.name ফিল্ড আপডেট করার সময়, যা একটি স্ট্রিং, আমরা ক্ষেত্রটিকে সরাসরি আপডেট করে সেট করি যেন এটি একটি সাধারণ পাইথন অবজেক্ট অ্যাট্রিবিউট ছিল:

campaign.name = "Test campaign value"

campaign.manual_cpc হল একটি নেস্টেড ক্ষেত্র, যার অর্থ এটিতে অন্য একটি প্রোটোবাফ বার্তা রয়েছে এবং একটি স্ট্রিংয়ের মতো একটি আদিম প্রকার নয়। আপনি সরাসরি এর ক্ষেত্রগুলিও আপডেট করতে পারেন:

campaign.manual_cpc.enhanced_cpc_enabled = True

এটি API কে বলবে যে এই প্রচারাভিযানে বর্ধিত CPC সক্ষম সহ manual_cpc এর একটি বিডিং কৌশল রয়েছে৷

কিন্তু আপনি যদি manual_cpm ব্যবহার করতে চান, যা খালি? অথবা বর্ধিত সিপিসি সক্ষম না করেই manual_cpc ? এটি করার জন্য আপনাকে প্রচারে ক্লাসের একটি পৃথক খালি উদাহরণ অনুলিপি করতে হবে, উদাহরণস্বরূপ:

client = GoogleAdsClient.load_from_storage()

empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)

campaign অবজেক্টের জন্য manual_cpm কীভাবে নির্দিষ্ট করা হয়েছে তা লক্ষ্য করুন:

name {
  value: "Test campaign value"
}
manual_cpm {
}

manual_cpm ক্ষেত্রটি সেট করা আছে, কিন্তু এর কোনো ক্ষেত্রের মান নেই। এই প্যাটার্ন ব্যবহার করে এমন API-কে অনুরোধ পাঠানোর সময়, আপনি লগিং সক্ষম করে এবং অনুরোধ পেলোড পরিদর্শন করে খালি বার্তা বস্তুটি সঠিকভাবে সেট করছেন কিনা তা যাচাই করতে পারেন।

অবশেষে, আপনাকে অনুরোধ বস্তুর update_mask এ ম্যানুয়ালি এই ক্ষেত্রটি যোগ করতে হবে। ফিল্ড মাস্ক হেল্পারের কোনো ফিল্ডের মধ্যে পার্থক্য নির্ণয় করার কোনো ব্যবস্থা নেই যা একটি খালি বস্তুতে স্পষ্টভাবে সেট করা হয়েছে এবং একটি ফিল্ড সেট করা হয়নি।

from google.api_core.protobuf_helpers import field_mask

campaign_operation.create = campaign
campaign_operation.update_mask = field_mask(None, campaign)
# Here we manually add the "manual_cpm" field
campaign_operation.update_mask.append("manual_cpm")