Ads Manager স্ক্রিপ্ট

Google Ads স্ক্রিপ্টে AdsManagerApp ক্লাস আপনাকে নিজের ম্যানেজার অ্যাকাউন্টের অধীনে লিঙ্ক করা অ্যাকাউন্ট ম্যানেজ করতে দেয়। আপনি প্রতিটি অ্যাকাউন্টের জন্য আলাদা স্ক্রিপ্ট তৈরি করার পরিবর্তে একটি স্ক্রিপ্টের মাধ্যমে আপনার সব বিজ্ঞাপনদাতার অ্যাকাউন্ট ম্যানেজ করতে পারবেন।

অ্যাকাউন্টের তালিকা ফিরিয়ে আনা

আপনি accounts পদ্ধতি ব্যবহার করে ম্যানেজার অ্যাকাউন্টের অধীনে থাকা অ্যাকাউন্টগুলি পুনরুদ্ধার করতে পারেন, যেমন:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

যেসব অ্যাকাউন্ট ফিরিয়ে আনা যাবে সেগুলির ক্ষেত্রে কিছু বিধিনিষেধ আছে:

  • আপনার যদি মাল্টি-লেভেল হায়রার্কি থাকে, তাহলে ম্যানেজার অ্যাকাউন্ট ফিরিয়ে আনা যাবে না। শুধুমাত্র ক্লায়েন্ট অ্যাকাউন্ট বেছে নেওয়া যাবে।
  • ডিফল্ট হিসেবে, বন্ধ, বাতিল ও সাসপেন্ড করা অ্যাকাউন্ট দেখানো হয় না। আপনি customer_client.status-এর জন্য অন্য একটি ফিল্টার নির্দিষ্ট করে withCondition কল করার মাধ্যমে এই আচরণ ওভাররাইড করতে পারেন।

accounts কল ডিফল্ট হিসেবে ম্যানেজার অ্যাকাউন্ট হায়ারার্কির অধীনে থাকা সব ক্লায়েন্ট অ্যাকাউন্টের তালিকা পুনরুদ্ধার করে। আপনার স্ক্রিপ্ট যতগুলি অ্যাকাউন্ট রিট্রিভ করে তার সংখ্যা সীমিত করতে, আপনি withLimit পদ্ধতির ManagedAccountSelector ক্লাস ব্যবহার করতে পারেন। অন্য একটি বিকল্প হল withIds পদ্ধতি ব্যবহার করে কাস্টমার আইডি অনুযায়ী অ্যাকাউন্ট বেছে নেওয়া:

// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
    .withIds(['123-456-7890', '234-567-8901', '345-678-9012']);

ক্লায়েন্ট অ্যাকাউন্টে কাজ করা

ক্লায়েন্ট অ্যাকাউন্ট ফিরিয়ে আনার পরে, আপনি ইটারেটরের hasNext এবং next মেথড ব্যবহার করে সেগুলির মধ্যে দিয়ে ইটারেট করতে পারবেন। ক্লায়েন্ট অ্যাকাউন্টে এক্সিকিউশন কনটেক্সট পরিবর্তন করতে আপনাকে select মেথড ব্যবহার করতে হবে। আপনি একটি ক্লায়েন্ট অ্যাকাউন্ট বেছে নেওয়ার পরে, আপনি অন্য কোনও অ্যাকাউন্ট স্পষ্টভাবে বেছে না নেওয়া পর্যন্ত ক্লায়েন্ট অ্যাকাউন্টে আরও যেকোনও API কল প্রযোজ্য হবে:

// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();

// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds

// Iterate through the list of accounts
for (const account of accountIterator) {
  // Select the client account.
  AdsManagerApp.select(account);

  // Select Search and Display campaigns under the client account
  const campaignIterator = AdsApp.campaigns().get();

  // Operate on client account
  ...
}

একই সাথে একাধিক অ্যাকাউন্টে কাজ করা

Google Ads স্ক্রিপ্ট আপনাকে ManagedAccountSelector ক্লাসের executeInParallel পদ্ধতি ব্যবহার করে, সমান্তরালভাবে একাধিক ক্লায়েন্ট অ্যাকাউন্ট অপারেট করতে দেয়। executeInParallel পদ্ধতিতে নিম্নলিখিত স্বাক্ষর রয়েছে:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

executeInParallel পদ্ধতিটি functionName দ্বারা নির্দিষ্ট করা একটি ফাংশন প্রতিটি ManagedAccount-এ এক্সিকিউট করে যা ManagedAccountSelector-এর সাথে মেলে। সব অ্যাকাউন্ট প্রসেস করা হয়ে গেলে, কলব্যাক ফাংশন, যদি optionalCallbackFunctionName দ্বারা নির্দিষ্ট করা থাকে, একবার এক্সিকিউট করা হয়, আরও প্রসেস করার জন্য এর আর্গুমেন্ট হিসেবে ExecutionResult অবজেক্টের একটি তালিকা পাস করা হয়। সাধারণ ব্যবহার এখানে দেখানো হয়েছে:

function main() {
  const accountSelector = AdsManagerApp.accounts()
      .withLimit(50)
      .withCondition('customer_client.currency_code = "USD"');

  accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}

function processClientAccount() {
  const clientAccount = AdsApp.currentAccount();

  // Process your client account here.
  ...

  // optionally, return a result, as text.
  return "";
}

function afterProcessAllClientAccounts(results) {
  for (const result of results) {
    // Process the result further
    ...
  }
}

functionName-এর মাধ্যমে নির্দিষ্ট করা ফাংশন ঐচ্ছিকভাবে একটি স্ট্রিং আর্গুমেন্ট (optionalInput) গ্রহণ করতে পারে। executeInParallel-এর মাধ্যমে কল করা সব প্যারালাল পদ্ধতিতে একটি অতিরিক্ত প্যারামিটার পাস করার জন্য এই প্যারামিটার ব্যবহার করা যেতে পারে:

function main() {
  const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
  const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
  accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}

function processClientAccount(sharedParameter) {
  // Process your client account here.
  ...
}

আপনি যদি অ্যাকাউন্ট-নির্দিষ্ট সেটিংস সহ একটি জাভাস্ক্রিপ্ট কনফিগারেশন অবজেক্ট পাস করতে চান, তাহলে প্রথমে এটিকে JSON.stringify মেথড ব্যবহার করে স্ট্রিংয়ে কনভার্ট করতে পারেন:

function main() {
  ...
  const accountFlags = {
    '1234567890': {
       'label': 'Brand 1 campaigns',
     },
    '3456787890': {
       'label': 'Brand 2 campaigns',
     }
  };
  accountSelector.executeInParallel("processClientAccount", null,
      JSON.stringify(accountFlags));
  ...
}

function processClientAccount(sharedParameter) {
  const accountFlags = JSON.parse(sharedParameter);
  // Process your client account here.
  ...
}

functionName-এর মাধ্যমে নির্দিষ্ট করা ফাংশন, JSON.stringify-এর মাধ্যমে অবজেক্টের পরিবর্তে স্ট্রিংও রিটার্ন করতে পারে:

function processClientAccount() {
  ...
  const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
  return JSON.stringify(jsonObj);
}

ফেরত দেওয়া মানগুলি ExecutionResult অবজেক্টের একটি তালিকায় কলব্যাক ফাংশনে পাস করা হয়। আপনি ফাংশন থেকে JSON স্ট্রিং রিটার্ন করলে, JSON.parse মেথড ব্যবহার করে এটি আবার জাভাস্ক্রিপ্ট অবজেক্টে কনভার্ট করতে পারবেন:

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

এই executeInParallel পদ্ধতি সর্বাধিক ৫০টি accounts-এর উপর কাজ করে, তাই আপনার স্ক্রিপ্ট যে অ্যাকাউন্টগুলি রিট্রিভ করে সেগুলির সংখ্যা সীমিত করতে আপনাকে নিজের বিধিনিষেধ প্রয়োগ করতে হবে। আপনার স্ক্রিপ্ট যে সংখ্যক অ্যাকাউন্ট ফিরিয়ে আনে তা সীমিত করতে আপনি ManagedAccountSelector ক্লাসের withLimit বা withIds পদ্ধতি ব্যবহার করতে পারেন।

এক্সিকিউশন টাইম লিমিট

Ads Manager স্ক্রিপ্ট এক্সিকিউশন টাইম লিমিট সম্পর্কে বিস্তারিত জানতে সীমা সংক্রান্ত ডকুমেন্টেশন দেখুন।