প্রচারণার খসড়া এবং পরীক্ষা-নিরীক্ষা

গুগল অ্যাডস স্ক্রিপ্ট ক্যাম্পেইন ড্রাফট এবং এক্সপেরিমেন্ট সমর্থন করে, যা সার্চ এবং ডিসপ্লে নেটওয়ার্ক ক্যাম্পেইনের পরিবর্তনগুলো প্রস্তুত ও পরীক্ষা করার জন্য ব্যবহৃত হয়।

এই নির্দেশিকাটি একটি স্ক্রিপ্টে ড্রাফট এবং এক্সপেরিমেন্ট নিয়ে কাজ করার মৌলিক কার্যপ্রবাহ ব্যাখ্যা করে।

খসড়া

ড্রাফট হলো একটি বিদ্যমান ক্যাম্পেইনের ক্লোন, যা নিজস্ব বিজ্ঞাপন প্রদর্শন করে না, কিন্তু মূল ক্যাম্পেইন পরিবর্তন না করেই পর্যায়ক্রমিক পরিবর্তন আনার জন্য এটি ব্যবহার করা যায়। এরপর এই পর্যায়ক্রমিক পরিবর্তনগুলো মূল ক্যাম্পেইনে প্রয়োগ করা যেতে পারে।

একটি খসড়া তৈরি করুন

একটি DraftBuilder ব্যবহার করে এবং একটি অনন্য নাম প্রদান করে বিদ্যমান মূল ক্যাম্পেইন থেকে একটি ড্রাফট তৈরি করা হয়। মূল ক্যাম্পেইনটি অবশ্যই একটি সার্চ, ডিসপ্লে এক্সপ্যানশন সহ সার্চ নেটওয়ার্ক ক্যাম্পেইন, অথবা ডিসপ্লে ক্যাম্পেইন (ডিসপ্লে নেটওয়ার্কের জন্য মোবাইল অ্যাপ ক্যাম্পেইন ব্যতীত) হতে হবে এবং এটির কোনো শেয়ার্ড বাজেট থাকা যাবে না।

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");

মূল ক্যাম্পেইনের মতোই ড্রাফট ক্যাম্পেইনের জন্যও বিজ্ঞাপন নীতি যাচাই করা হয়। নীতি লঙ্ঘনকারী বিজ্ঞাপন রয়েছে এমন কোনো ড্রাফট ক্যাম্পেইন থেকে আপনি কোনো এক্সপেরিমেন্ট চালাতে পারবেন না।

খসড়াটি কার্যকর করুন

খসড়া প্রচারাভিযানটি প্রস্তুত করার পর, আপনি নিম্নলিখিত কাজগুলোর মধ্যে যেকোনো একটি করতে পারেন:

  1. আপনি যদি পরিবর্তনগুলো ব্যবহার করতে না চান, তবে ড্রাফটটি মুছে ফেলতে পারেন। ড্রাফটটি মুছে ফেললে তা আর ফেরানো যাবে না, কিন্তু গুগল অ্যাডস ইউআই-এর ড্রাফটস ট্যাবের ‘অল ড্রাফটস’ অংশে এটি তখনও দেখা যাবে।

        draft.remove();
    
  2. খসড়াটিতে আপনি যে পরিবর্তনগুলো করেছেন, সেগুলো যদি রাখার সিদ্ধান্ত নেন, তবে আপনি সেগুলো প্রয়োগ করতে পারেন:

        draft.startApplying();
    

    এই পদ্ধতিটি মূল ক্যাম্পেইনে আপডেটগুলো প্রয়োগ করার প্রক্রিয়া শুরু করে, তাই গুগল অ্যাডস UI-তে ড্রাফটটির স্ট্যাটাস ' Applying...' দেখাবে। তবে, প্রক্রিয়াটি সম্পন্ন হলে এই পদ্ধতিটি আপনাকে অবহিত করবে না

  3. আপনি যদি প্রথমে আপনার পরিবর্তনগুলো পরীক্ষা করে দেখতে চান, তাহলে খসড়াটি ব্যবহার করে একটি পরীক্ষা তৈরি করতে পারেন।

পরীক্ষাগুলি

একটি এক্সপেরিমেন্ট মূল ক্যাম্পেইনের সমান্তরালে একটি কাস্টমাইজযোগ্য ক্যাম্পেইন চালায় এবং ট্রাফিকের একটি নির্দিষ্ট শতাংশকে বিজ্ঞাপন দেখায়। এক্সপেরিমেন্টের ফলাফলের উপর ভিত্তি করে, আপনি মূল ক্যাম্পেইনে পরিবর্তনগুলো প্রয়োগ করতে পারেন, এক্সপেরিমেন্টটিকে একটি স্বাধীন ক্যাম্পেইনে স্থানান্তর করতে পারেন, অথবা এক্সপেরিমেন্ট ক্যাম্পেইনটি বাতিল করে দিতে পারেন।

একটি পরীক্ষা তৈরি করুন

একটি 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-এর এক্সপেরিমেন্টস ট্যাবের অধীনে 'All experiments'- এ এটি তখনও দেখা যাবে।

        experiment.remove();
    
  • যদি আপনি পরীক্ষার ফলাফলে সন্তুষ্ট হন, তাহলে আপনার কাছে দুটি বিকল্প আছে:

    1. আপনি পরিবর্তনগুলো প্রয়োগ করা শুরু করতে পারেন এবং খসড়ার মতোই, প্রক্রিয়াটি সম্পন্ন হলে আপনাকে জানানো হবে না।

          experiment.startApplying();
      
    2. আপনি মূল ক্যাম্পেইনকে প্রভাবিত না করেই এক্সপেরিমেন্ট ক্যাম্পেইনটিকে একটি স্বাধীন ও সম্পূর্ণ কার্যকর ক্যাম্পেইন হিসেবে প্রতিষ্ঠা করতে পারেন। গ্র্যাজুয়েশন নামে পরিচিত এই প্রক্রিয়াটি অবিলম্বে সম্পন্ন হয় এবং এর জন্য একটি নতুন বাজেট নির্ধারণ করতে হয়।

          const budget = AdsApp.budgets()
              .withCondition(`campaign_budget.id = ${budgetId}`)
              .get()
              .next();
      
          experiment.graduate(budget);
      

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

অন্যান্য বিবেচ্য বিষয়

ভিত্তি সত্তা

গুগল অ্যাডস স্ক্রিপ্টে ড্রাফট এবং এক্সপেরিমেন্ট যুক্ত হওয়ার সাথে সাথে বেস এনটিটি-র ধারণাও চালু হয়েছে। ড্রাফট ও এক্সপেরিমেন্ট ক্যাম্পেইন এবং এর অন্তর্ভুক্ত অ্যাড গ্রুপগুলো তাদের মূল বেস ক্যাম্পেইন থেকে আলাদা। এই কারণেই এখন Campaign এবং AdGroup তাদের বেস ক্যাম্পেইন ও অ্যাড গ্রুপ অ্যাক্সেস করার জন্য getBaseCampaign() এবং getBaseAdGroup() মেথড রয়েছে।

কোনো বেস ক্যাম্পেইন বা অ্যাড গ্রুপ থেকে কল করা হলে এই মেথডগুলো কলিং এনটিটি রিটার্ন করে। ক্যাম্পেইন এবং অ্যাড গ্রুপের অন্তর্ভুক্ত এনটিটি, যেমন কীওয়ার্ড এবং অ্যাড, গুলোকেও এই ধরনের মেথড দেওয়া হয়েছে।

মূল সত্তাগুলোর হিসাব রাখতে সাহায্য করার জন্য, ক্যাম্পেইনগুলোকে isBaseCampaign() , isDraftCampaign() , এবং isExperimentCampaign() মেথডগুলো দেওয়া হয়েছে।

নতুন Campaign.draftCampaigns() এবং Campaign.experimentCampaigns() মেথডগুলো আপনাকে সেই সমস্ত ড্রাফট এবং এক্সপেরিমেন্ট ক্যাম্পেইন অ্যাক্সেস করার সুযোগ দেয়, যেগুলোর বেস ক্যাম্পেইন হিসেবে কলিং ক্যাম্পেইনটি রয়েছে। তবে, আপনি CampaignSelector.withCondition() ব্যবহার করে ড্রাফট ক্যাম্পেইন নির্বাচন করতে পারবেন না; এর পরিবর্তে AdsApp.drafts() ব্যবহার করুন।

ত্রুটি পরিচালনা

খসড়া এবং পরীক্ষা-নিরীক্ষা সম্পর্কিত নিম্নলিখিত পদ্ধতিগুলো স্ক্রিপ্টটি চালানোর সময় অগ্রসর হয়, কিন্তু অ্যাসিঙ্ক্রোনাসভাবে ব্যর্থ হতে পারে:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

এই অপারেশনগুলো সফল হয়েছে কিনা তা পরীক্ষা করার জন্য আপনার অপেক্ষা করা উচিত। startApplying() এবং startScheduling() সফলভাবে সম্পন্ন হওয়ার পর Google Ads UI যথাক্রমে Applied বা Active স্ট্যাটাস দেখায়। আর, ব্যর্থ হলে এটি Unable to apply বা Unable to create নির্দেশ করে, যেখানে ক্লিক করে আপনি ত্রুটিগুলো দেখতে পারেন।

এমনও হতে পারে যে কিছু মেথড প্রিভিউ পর্যায়ে ব্যর্থ হয়, কিন্তু রান করার পর সফল হয়; উদাহরণস্বরূপ, একটি ড্রাফট তৈরি করার পরে:

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

প্রিভিউ মোডে এটি ব্যর্থ হবে, কারণ এটি তাৎক্ষণিকভাবে ড্রাফট ক্যাম্পেইনটি অ্যাক্সেস করতে পারে না।

একইভাবে, একটি এক্সপেরিমেন্ট তৈরি করে সাথে সাথেই তার ড্রাফট ক্যাম্পেইনটি প্রিভিউ মোডে আনার চেষ্টা করলে তা ব্যর্থ হবে, কারণ ড্রাফটটি আসলে তৈরিই হয়নি।

এই কারণে, স্ক্রিপ্টগুলো চালানোর পর আপনার স্ক্রিপ্ট তালিকার নিচের লগগুলো পরীক্ষা করুন, এবং প্রিভিউ মোডের সীমাবদ্ধতার কারণে কোনো স্ক্রিপ্ট ব্যর্থ হয়েছে বলে মনে করলেই কেবল সেটির কাজ এগিয়ে নিয়ে যান।