গুগল অ্যাডস স্ক্রিপ্টের 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']);
ক্লায়েন্ট অ্যাকাউন্ট নিয়ে কাজ করুন
একবার আপনি ক্লায়েন্ট অ্যাকাউন্টগুলো সংগ্রহ করে নিলে, iterator-এর 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
...
}
সমান্তরালভাবে হিসাবের কাজ করুন
গুগল অ্যাডস স্ক্রিপ্ট আপনাকে ManagedAccountSelector ক্লাসের executeInParallel মেথড ব্যবহার করে সমান্তরালভাবে একাধিক ক্লায়েন্ট অ্যাকাউন্টে কাজ করার সুযোগ দেয়। executeInParallel মেথডটির সিগনেচারটি নিম্নরূপ:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
` executeInParallel মেথডটি ` ManagedAccountSelector এর সাথে মিলে যাওয়া প্রতিটি ManagedAccount উপর functionName দ্বারা নির্দিষ্ট একটি ফাংশন কার্যকর করে। সমস্ত অ্যাকাউন্ট প্রক্রিয়াজাত হয়ে গেলে, 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 মেথড ব্যবহার করতে পারেন।
নির্বাহের সময়সীমা
অ্যাডস ম্যানেজার স্ক্রিপ্ট কার্যকর করার সময়সীমা সম্পর্কে বিস্তারিত জানতে লিমিটস ডকুমেন্টেশন দেখুন।