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 কল ডিফল্ট হিসেবে ম্যানেজার অ্যাকাউন্ট হায়ারার্কির অধীনে থাকা সব ক্লায়েন্ট অ্যাকাউন্টের তালিকা ফেরত পাঠায়। আপনার স্ক্রিপ্ট যতগুলি অ্যাকাউন্ট ফিরিয়ে আনে তার সংখ্যা সীমিত করতে আপনি ManagedAccountSelector ক্লাসের withLimit পদ্ধতি ব্যবহার করতে পারেন। অন্য একটি বিকল্প হল, 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 পদ্ধতিটি প্রতিটি ManagedAccount-এ functionName দ্বারা নির্দিষ্ট করা একটি ফাংশন কার্যকর করে যা 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 স্ক্রিপ্ট এক্সিকিউশন টাইম লিমিট সম্পর্কে বিস্তারিত জানতে সীমা সংক্রান্ত ডকুমেন্টেশন দেখুন।