Google Ads স্ক্রিপ্ট ক্যাম্পেন ড্রাফ্ট ও পরীক্ষা সাপোর্ট করে, যা সার্চ ও ডিসপ্লে নেটওয়ার্ক ক্যাম্পেনে পরিবর্তন প্রস্তুত ও পরীক্ষা করতে ব্যবহার করা হয়।
এই নির্দেশিকা স্ক্রিপ্টে ড্রাফ্ট ও এক্সপেরিমেন্ট নিয়ে কাজ করার প্রাথমিক ওয়ার্কফ্লো ব্যাখ্যা করে।
ড্রাফ্ট
ড্রাফ্ট হল আগে থেকে থাকা ক্যাম্পেনের ক্লোন যা নিজের বিজ্ঞাপন দেখাবে না, তবে আসল ক্যাম্পেন পরিবর্তন না করেই পরিবর্তনের স্টেজ হিসেবে ব্যবহার করা যেতে পারে। তারপর, বেস ক্যাম্পেনে স্টেজ করা পরিবর্তনগুলি প্রয়োগ করা যেতে পারে।
ড্রাফ্ট তৈরি করুন
DraftBuilder ব্যবহার করে এবং একটি অনন্য নাম প্রদান করে
আগে থেকে থাকা বেস ক্যাম্পেন থেকে একটি ড্রাফ্ট তৈরি করা হয়। বেস ক্যাম্পেনটি অবশ্যই ডিসপ্লে এক্সপ্যানশন সহ সার্চ, সার্চ নেটওয়ার্ক
ক্যাম্পেন বা ডিসপ্লে ক্যাম্পেন (Display Network-এর জন্য মোবাইল অ্যাপ
ক্যাম্পেন বাদ দিয়ে) হতে হবে এবং এতে শেয়ার করা বাজেট থাকলে চলবে না।
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build(), DraftOperation রিটার্ন করে, যা স্ক্রিপ্টে
একটি সাধারণ অপারেশন। আরও বিবরণের জন্য আমাদের বিল্ডার সংক্রান্ত নির্দেশিকা দেখুন।
draft-কে অনন্যভাবে শনাক্ত করা হয় এর বেস ক্যাম্পেন আইডি এবং
ড্রাফ্ট আইডির কম্বিনেশনের মাধ্যমে। আরও তথ্যের জন্য DraftSelector.withIds() দেখুন।
ড্রাফ্ট ক্যাম্পেন প্রোভিশন করা
draft অবজেক্ট বেস ক্যাম্পেন ও ড্রাফ্ট ক্যাম্পেনের সাথে সম্পর্কিত। বেস ক্যাম্পেনে আপডেট স্টেজ করতে, ড্রাফ্ট ক্যাম্পেনের মাধ্যমে পরিবর্তন প্রোপাগেট করুন।
অন্যান্য ক্যাম্পেনের মতো ড্রাফ্ট ক্যাম্পেনেও বিভিন্ন অ্যাট্রিবিউট সেট করা ও পাওয়ার পদ্ধতি আছে, যেমন মাপকাঠি, বিজ্ঞাপন গ্রুপ, বিড ও বিজ্ঞাপন।
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
বেস ক্যাম্পেনের মতো ড্রাফ্ট ক্যাম্পেনের ক্ষেত্রেও বিজ্ঞাপন নীতি চেক করা হয়। নীতি লঙ্ঘনকারী বিজ্ঞাপন আছে এমন ড্রাফ্ট ক্যাম্পেন থেকে আপনি কোনও এক্সপেরিমেন্ট রান করতে পারবেন না।
ড্রাফ্ট এক্সিকিউট করুন
ড্রাফ্ট ক্যাম্পেন প্রোভিশন করার পরে, আপনি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি করতে পারবেন:
আপনি পরিবর্তনগুলি ব্যবহার করতে না চাইলে, শুধু ড্রাফ্টটি সরিয়ে দিতে পারেন। ড্রাফ্ট সরিয়ে দিলে তা আর ফিরিয়ে আনা যায় না, তবে Google Ads UI-এর ড্রাফ্ট ট্যাবে সব ড্রাফ্ট বিকল্পে গিয়ে এটি এখনও দেখা যাবে।
draft.remove();আপনি যদি ড্রাফ্টে করা পরিবর্তনগুলি রাখার সিদ্ধান্ত নেন, তাহলে আপনি এগিয়ে যেতে পারেন এবং সেগুলি প্রয়োগ করতে পারেন:
draft.startApplying();এই পদ্ধতিতে বেস ক্যাম্পেনে আপডেট প্রয়োগ করার প্রসেস শুরু হয়, তাই Google Ads UI-তে ড্রাফ্টের স্ট্যাটাস প্রয়োগ করা হচ্ছে... হিসেবে দেখানো হবে। তবে, প্রসেস সম্পূর্ণ হলে, এই পদ্ধতি আপনাকে বিজ্ঞপ্তি পাঠিয়ে জানাবে না।
আপনি যদি প্রথমে আপনার পরিবর্তনগুলি পরীক্ষা করতে চান, তাহলে আপনি একটি পরীক্ষা তৈরি করতে ড্রাফ্ট ব্যবহার করতে পারেন।
পরীক্ষা
এক্সপেরিমেন্ট আসল ক্যাম্পেনের সমান্তরালে একটি কাস্টমাইজ করা ক্যাম্পেন চালায় এবং ট্রাফিকের একটি নির্দিষ্ট শতাংশে বিজ্ঞাপন দেখায়। এক্সপেরিমেন্টের ফলাফলের ভিত্তিতে, আপনি আসল ক্যাম্পেনে পরিবর্তনগুলি প্রয়োগ করতে পারেন, এক্সপেরিমেন্টটিকে একটি স্বাধীন ক্যাম্পেনে ব্রাঞ্চ করতে পারেন বা এক্সপেরিমেন্ট ক্যাম্পেনটি বাতিল করতে পারেন।
এক্সপেরিমেন্ট তৈরি করা
experiment হল ড্রাফ্টের মতো এবং এটিও বেস ক্যাম্পেন থেকে তৈরি করা হয়।
আপনি ExperimentBuilder-এর মাধ্যমে experiment তৈরি করেন। এটি অটোমেটিক দুটি "আর্ম" সহ একটি এক্সপেরিমেন্ট তৈরি করবে যা এক্সপেরিমেন্টের বিভিন্ন অংশকে দেখায়। একটি আর্ম (যাকে কন্ট্রোল আর্ম বলা হয়) বেস ক্যাম্পেন
ধারণ করবে এবং অন্যটি (যাকে ট্রিটমেন্ট আর্ম বলা হয়) একটি নতুন ড্রাফ্ট ক্যাম্পেন
ধারণ করবে যা আপনি এক্সপেরিমেন্ট শিডিউল করার আগে কাস্টমাইজ করবেন (আগে দেখানো ড্রাফ্টের ধাপ অনুযায়ী)।
এক্সপেরিমেন্ট তৈরি করার সময়, বিল্ডারে নিম্নলিখিত সবকটি সেট করতে ভুলবেন না:
withCampaign- আপনি যে ক্যাম্পেনের উপর ভিত্তি করে এক্সপেরিমেন্ট করতে চান।
withTrafficSplitPercent- কত শতাংশ ট্রাফিক এক্সপেরিমেন্ট আর্মের দিকে যাবে। ৫০% এর জন্য,
50উল্লেখ করুন। withStartDateওwithEndDate- ক্যাম্পেন শুরু ও শেষ হওয়ার তারিখ নির্দিষ্ট করে।
YYYYMMddফর্ম্যাটে উল্লেখ করুন। withType- আপনি কোন নেটওয়ার্ক ব্যবহার করছেন তার উপর নির্ভর করে
SEARCH_CUSTOMঅথবাDISPLAY_CUSTOM। withSuffix- ট্রিটমেন্ট ক্যাম্পেন তৈরি করার সময় সেটির নামের সাথে যোগ করা হবে এমন একটি সাফিক্স নির্দিষ্ট করে ।
withGoals- এই পরীক্ষার জন্য লক্ষ্য নির্দিষ্ট করে। এটি শুধু নিজের জন্য একটি রিমাইন্ডার যে
এটি তৈরি করার সময় আপনার লক্ষ্য কী ছিল। একটি ভালো ডিফল্ট ভ্যালু হল
[{metric: 'CLICKS', direction: 'INCREASE'}]।
ট্রাফিক স্প্লিট শতাংশ নির্ধারণ করে যে বেস ক্যাম্পেনের পরিবর্তে এক্সপেরিমেন্ট ক্যাম্পেনের বিজ্ঞাপন ট্রাফিকের কত অংশকে দেখানো হবে। এই কারণে, প্রতিটি বেস ক্যাম্পেনে একবারে শুধুমাত্র একটিই রানিং এক্সপেরিমেন্ট থাকতে পারে।
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
ড্রাফ্টের মতো নয়, পরীক্ষাগুলি একটি আইডি দ্বারা অনন্যভাবে শনাক্ত করা হয়। আরও তথ্যের জন্য
ExperimentSelector.withIds() দেখুন।
এক্সপেরিমেন্ট ক্যাম্পেন প্রোভিশন করা
draft-এর মতো, experiment নিজেই কোনও ক্যাম্পেন নয়। বরং, এটি
বেস ক্যাম্পেন, ড্রাফ্ট এবং এক্সপেরিমেন্ট ক্যাম্পেনকে সম্পর্কিত করে। পরীক্ষামূলক ক্যাম্পেনের
ফিল্ড পরিবর্তন করা যায়, তবে নিম্নলিখিত ব্যতিক্রমগুলি রয়েছে:
- নাম
- স্ট্যাটাস
- শুরুর তারিখ
- শেষ হওয়ার তারিখ
- বাজেট
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
এক্সপেরিমেন্টের নাম, শুরু ও শেষ হওয়ার তারিখে পরিবর্তন করা যেতে পারে, যার পরে সেগুলি এক্সপেরিমেন্ট ক্যাম্পেনে প্রয়োগ করা হবে।
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
এক্সপেরিমেন্ট শুরু করতে, experiment.startScheduling()-এ কল করুন। এটি একটি
অ্যাসিঙ্ক্রোনাস প্রসেস, কারণ এটি অবশ্যই বেস ক্যাম্পেন থেকে সমস্ত সেটিংস কপি করবে।
এক্সপেরিমেন্ট শেষ হওয়ার পরে
আপনার পরীক্ষা সম্পূর্ণ হওয়ার পরে, আপনার কাছে কয়েকটি বিকল্প থাকবে। আমরা সাজেস্ট করি যে এক্সপেরিমেন্ট সম্পূর্ণ শেষ হতে দিন যাতে এটি বিজ্ঞাপন দেখানো বন্ধ করে দেয়, তবে আপনি এখনও এটির সাথে ইন্টার্যাক্ট করতে পারবেন। শেষ হয়ে যাওয়া এক্সপেরিমেন্ট এখনও সরানো, প্রয়োগ করা বা গ্র্যাজুয়েট করা যেতে পারে এবং এর ক্যাম্পেনের পারফর্ম্যান্স সংক্রান্ত পরিসংখ্যান এখনও অ্যাক্সেস করা যায়।
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
পরিসংখ্যানের ভিত্তিতে এক্সপেরিমেন্ট নিয়ে আপনি অসন্তুষ্ট হলে, এক্সপেরিমেন্টটি সরিয়ে দিতে পারেন, যার ফলে এক্সপেরিমেন্ট ক্যাম্পেনও সরিয়ে দেওয়া হবে। এক্সপেরিমেন্ট সরিয়ে দিলে তা আর ফিরিয়ে আনা যায় না, তবে Google Ads UI-এর এক্সপেরিমেন্ট ট্যাবে সব এক্সপেরিমেন্ট বিকল্পে গিয়ে এটি এখনও দেখা যাবে।
experiment.remove();এক্সপেরিমেন্টের ফলাফলে সন্তুষ্ট হলে, আপনার কাছে দুটি বিকল্প আছে:
আপনি পরিবর্তনগুলি প্রয়োগ করা শুরু করতে পারেন এবং ড্রাফ্টের মতোই, প্রক্রিয়াটি সম্পূর্ণ হলে আপনাকে জানানো হবে না।
experiment.startApplying();আপনি বেস ক্যাম্পেনকে প্রভাবিত না করেই এক্সপেরিমেন্ট ক্যাম্পেনকে একটি স্বাধীন, সম্পূর্ণ-অপারেটিং ক্যাম্পেন হিসেবে প্রতিষ্ঠা করতে পারেন। এই প্রক্রিয়াকে গ্র্যাজুয়েশন বলা হয়, এটি অবিলম্বে সম্পূর্ণ হয় এবং নতুন বাজেট সেট করতে হয়।
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);নতুন ক্যাম্পেনটি আর বেস ক্যাম্পেনের সাথে বাজেট শেয়ার করতে পারবে না, যার জন্য একটি নতুন বাজেট প্রয়োজন। গ্র্যাজুয়েট হওয়া ক্যাম্পেনগুলি সাধারণ ক্যাম্পেনের মতোই হয়, কারণ সেগুলির সব ফিল্ড পরিবর্তন করা যায় এবং সেগুলি আরও ড্রাফ্ট ও এক্সপেরিমেন্টের জন্য বেস ক্যাম্পেন হিসেবে কাজ করতে পারে।
অন্যান্য বিষয়
বেস এন্টিটি
Google Ads স্ক্রিপ্টে ড্রাফ্ট ও পরীক্ষা চালু করার সাথে সাথে বেস এন্টিটির
ধারণাও চালু করা হয়েছে। ড্রাফ্ট ও এক্সপেরিমেন্ট ক্যাম্পেন এবং সেগুলির মধ্যে থাকা বিজ্ঞাপন গ্রুপ
তাদের মূল বেস ক্যাম্পেনের থেকে আলাদা, সেইজন্য
Campaign ও AdGroup-এর কাছে এখন তাদের বেস
ক্যাম্পেন ও বিজ্ঞাপন গ্রুপ অ্যাক্সেস করার পদ্ধতি আছে: getBaseCampaign() ও getBaseAdGroup().
বেস ক্যাম্পেন বা বিজ্ঞাপন গ্রুপ থেকে কল করা হলে, এই পদ্ধতিগুলি কলিং এন্টিটি রিটার্ন করে। ক্যাম্পেন এবং বিজ্ঞাপন গ্রুপের মধ্যে থাকা এন্টিটি, যেমন কীওয়ার্ড এবং বিজ্ঞাপন, এগুলিকেও এই ধরনের পদ্ধতি দেওয়া হয়েছে।
বেস এন্টিটির ট্র্যাক রাখতে, ক্যাম্পেনকে
isBaseCampaign(), isDraftCampaign() এবং
isExperimentCampaign() পদ্ধতি দেওয়া হয়েছে।
নতুন Campaign.draftCampaigns() এবং
Campaign.experimentCampaigns() পদ্ধতির মাধ্যমে আপনি সব ড্রাফ্ট এবং
এক্সপেরিমেন্ট ক্যাম্পেন অ্যাক্সেস করতে পারবেন যেগুলির বেস ক্যাম্পেন হল কলিং ক্যাম্পেন।
তবে, আপনি
CampaignSelector.withCondition() সহ ড্রাফ্ট ক্যাম্পেন বেছে নিতে পারবেন না; পরিবর্তে AdsApp.drafts() ব্যবহার করুন।
সমস্যা ম্যানেজ করা
স্ক্রিপ্ট রান করলে ড্রাফ্ট ও পরীক্ষা সম্পর্কিত নিম্নলিখিত পদ্ধতিগুলি চলতে থাকে, কিন্তু অ্যাসিঙ্ক্রোনাসভাবে ব্যর্থ হতে পারে:
Draft.startApplying()Experiment.startApplying()Experiment.startScheduling()
এইসব অপারেশন সফল হয়েছে কিনা তা চেক করার জন্য আপনাকে অপেক্ষা করতে হবে। Google Ads UI-তে
startApplying() এবং startScheduling() সম্পূর্ণ হওয়ার পরে যথাক্রমে
প্রয়োগ করা হয়েছে বা অ্যাক্টিভ স্ট্যাটাস দেখানো হয়। এবং, এটি ব্যর্থ হলে
প্রয়োগ করা যায়নি বা তৈরি করা যায়নি দেখায়, যা আপনাকে ক্লিক করে
সমস্যা দেখতে দেয়।
এছাড়াও, এটিও হতে পারে যে কিছু পদ্ধতি প্রিভিউ স্টেজে কাজ করে না, কিন্তু সেগুলি রান করার পরে কাজ করে; যেমন, ড্রাফ্ট তৈরি করার পরে:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
প্রিভিউ মোডে এটি কাজ করবে না কারণ এটি সাথে সাথে ড্রাফ্ট ক্যাম্পেন অ্যাক্সেস করতে পারে না।
একইভাবে, কোনও এক্সপেরিমেন্ট তৈরি করে সাথে সাথে তার ড্রাফ্ট ক্যাম্পেন ফেচ করার চেষ্টা করলে, প্রিভিউ মোডে তা ব্যর্থ হবে, কারণ ড্রাফ্টটি আসলে তৈরিই হয়নি।
এই কারণে, স্ক্রিপ্ট চালানোর পরে আপনার স্ক্রিপ্টের তালিকার নিচে লগ চেক করুন, এবং প্রিভিউ মোডে ব্যর্থ স্ক্রিপ্ট নিয়ে তখনই এগিয়ে যান যদি আপনি মনে করেন যে প্রিভিউ মোডের সীমাবদ্ধতার কারণে এটি হয়েছে।