মিউটেট

Google বিজ্ঞাপনের স্ক্রিপ্টগুলি জেনেরিক মিউটেটগুলির জন্য সমর্থন অফার করে যা Google বিজ্ঞাপন API- এ উপলব্ধ। GoogleAdsService.mutate থেকে সম্পাদিত বেশিরভাগ অপারেশনগুলি প্রচারাভিযান তৈরি এবং পরিচালনা সহ Google বিজ্ঞাপন স্ক্রিপ্টগুলিতেও সঞ্চালিত হতে পারে।

যেহেতু এই বৈশিষ্ট্যটি Google Ads API-এর এত বড় অংশে অ্যাক্সেসের অনুমতি দেয়, তাই এই বৈশিষ্ট্যটি ব্যবহার করার জন্য Google Ads API কনভেনশনগুলি সম্পর্কে প্রাথমিক ধারণা থাকা গুরুত্বপূর্ণ। অনেক দিক এড়িয়ে যেতে পারে, যেমন ডেভেলপার টোকেন এবং অনুমোদন, যেহেতু সেগুলি আপনার জন্য Google বিজ্ঞাপন স্ক্রিপ্ট দ্বারা পরিচালিত হয়, তবে আপনাকে একটি বৈধ মিউটেট অনুরোধ তৈরি করতে হবে।

এখানে Google Ads API REST ইন্টারফেসের কিছু মৌলিক সংস্থান রয়েছে যা এই নির্দেশিকাটি চালিয়ে যাওয়ার আগে আপনার পরিচিত হওয়া উচিত:

মৌলিক উদাহরণ

কার্যকারিতা প্রদর্শন করতে, এই মৌলিক উদাহরণটি বিবেচনা করুন যা একটি প্রচারাভিযানের বাজেট তৈরি করে:

const budgetResult = AdsApp.mutate({
    campaignBudgetOperation: {
      create: {
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });

AdsApp.mutate এ একটি কল একটি JSON অবজেক্ট নেয় যা একটি একক MutateOperation প্রতিনিধিত্ব করে। এই অবজেক্টের মধ্যে, আপনি কোন ধরনের অপারেশন করছেন তা নির্দিষ্ট করুন—এই ক্ষেত্রে, একটি campaignBudgetOperation । তারপর আপনি হয় create , remove বা update এবং updateMask উভয়ই নির্দিষ্ট করুন। create এবং update মধ্যে নির্দিষ্ট ক্ষেত্রগুলি আপনি যে নির্দিষ্ট ধরণের সংস্থান পরিচালনা করছেন তার উপর নির্ভর করে।

একটি অপারেশন তৈরি করুন

একটি বৈধ অপারেশন তৈরি করতে আপনি ব্যবহার করতে পারেন এমন কয়েকটি কৌশল রয়েছে। প্রচারাভিযানের বাজেটের উদাহরণের সাথে লেগে থাকা, আপনি প্রচারাভিযানের বাজেটের জন্য REST রেফারেন্স ডকুমেন্টেশন দেখতে পারেন এর সমস্ত বৈধ ক্ষেত্রের একটি তালিকা দেখতে, এবং তারপর উপযুক্ত ক্ষেত্রগুলি পূরণ করুন, বা একটি উপযুক্ত বস্তু তৈরি করতে আপনার স্ক্রিপ্টে কাস্টম জাভাস্ক্রিপ্ট কোড লিখুন৷

বিকল্পভাবে, আপনি প্রচারাভিযানের বাজেটের জন্য "এই চেষ্টা করুন" বৈশিষ্ট্যটি ব্যবহার করে গতিশীলভাবে একটি অপারেশন তৈরি করার চেষ্টা করতে পারেন, যা আপনাকে কোন ক্ষেত্রগুলি যোগ করতে চান তা বাছাই করে এবং বাছাই করে গতিশীলভাবে একটি অনুরোধের অংশ তৈরি করতে দেয়৷ তারপরে আপনি উত্পন্ন ফলাফল থেকে অপারেশনের বিষয়বস্তু বের করতে পারেন এবং অপারেশনের ধরন নির্দিষ্ট করার পরে এটি আপনার mutate কলে যোগ করতে পারেন।

অপারেশন প্রকার

তৈরি করুন

আপনি যে রিসোর্স তৈরি করতে চান তার একটি অবজেক্ট রিপ্রেজেন্টেশন পাস করে আপনার অপারেশনে create উল্লেখ করুন।

create অপারেশনের উদাহরণের জন্য উপরে দেখুন।

সরান

আপনি যে রিসোর্সটি অপসারণ করতে চান তার রিসোর্স নাম দিয়ে আপনার অপারেশনে remove নির্দিষ্ট করুন, উদাহরণস্বরূপ:

AdsApp.mutate({
    adGroupOperation: {
        remove: "customers/[CUSTOMER_ID]/adGroups/[AD_GROUP_ID]"
    }
});

আপনি যদি কোনো সত্তার সম্পদের নাম না জানেন, তাহলে আপনি একটি Adsapp.search অনুরোধ ব্যবহার করে এটি আনতে পারেন।

আপডেট

আপনার অপারেশনে update নির্দিষ্ট করুন, নির্দিষ্ট রিসোর্স নাম সহ একটি অবজেক্টে পাস করে যাতে সিস্টেমটি নির্ধারণ করতে পারে আপনি কোন অবজেক্ট আপডেট করতে চান। অতিরিক্তভাবে, আপনি যে ক্ষেত্রগুলির জন্য মানগুলি আপডেট করতে চান তা পূরণ করুন এবং একটি updateMask নির্দিষ্ট করুন যা নির্দেশ করে যে আপনি এই অনুরোধে কোন ক্ষেত্রগুলি পরিবর্তন করতে চান৷ আপডেট মাস্কে সম্পদের নাম অন্তর্ভুক্ত করবেন না।

একটি update অপারেশনের উদাহরণ:

const campaignResult = AdsApp.mutate({
    campaignOperation: {
        update: {
            resourceName: "customers/[CUSTOMER_ID]/campaigns/[CAMPAIGN_ID]",
            status: "PAUSED",
            name: "[Paused] My campaign"
        },
        updateMask: "name,status"
    }
});

হ্যান্ডলিং ফলাফল

অপারেশন প্রকার নির্বিশেষে, রিটার্ন মান একটি MutateResult । মিউটেটের পরে রিসোর্সের বর্তমান অবস্থা জানতে আপনি রিটার্ন করা রিসোর্স নাম ব্যবহার করতে পারেন এবং অপারেশন সফল হয়েছে কিনা বা কোন ত্রুটি থাকলে তা পরীক্ষা করতে পারেন।

ফলাফল পরীক্ষা করার জন্য এবং লগগুলিতে কিছু তথ্য মুদ্রণের জন্য একটি মৌলিক প্রবাহ দেখানোর একটি উদাহরণ এখানে রয়েছে:

const result = AdsApp.mutate( ... );
if (result.isSuccessful()) {
    console.log(`Resource ${result.getResourceName()} successfully mutated.`);
} else {
    console.log("Errors encountered:");
    for (const error of result.getErrorMessages()) {
        console.log(error);
    }
}

একাধিক অপারেশন

Google Ads স্ক্রিপ্টগুলি AdsApp.mutateAll পদ্ধতিতে একটি অনুরোধে একাধিক ক্রিয়াকলাপ মিউট করাও সমর্থন করে। আপনি একে অপরের উপর নির্ভরশীল সত্তা তৈরি করতে পারেন, যেমন একটি একক অনুরোধে একটি সম্পূর্ণ প্রচারাভিযান অনুক্রম। আপনি ঐচ্ছিকভাবে অপারেশনের সম্পূর্ণ সেটটিকে পারমাণবিক করতে পারেন, তাই যদি কোনো একটি ব্যর্থ হয়, তাহলে কোনোটিই করা হয় না।

রিটার্ন মান হল MutateResult অবজেক্টের একটি অ্যারে, আপনার দেওয়া প্রতিটি অপারেশনের জন্য একটি এবং প্রাথমিক ক্রিয়াকলাপের মতো একই ক্রমে।

এই বৈশিষ্ট্যটি Google Ads API বৈশিষ্ট্যের মতোই কাজ করে, তাই টেম্প আইডি এবং অন্যান্য বিবেচনার সম্পূর্ণ ব্যাখ্যার জন্য Google Ads API সেরা অনুশীলন নির্দেশিকা দেখুন; মনে রাখবেন যে গাইডটি snake_case ব্যবহার করে ফিল্ডের নামগুলি উপস্থাপন করে, যেখানে Google বিজ্ঞাপন স্ক্রিপ্ট ডকুমেন্টেশন lowerCamelCase ব্যবহার করছে। এই উভয় ক্ষেত্রেই Google বিজ্ঞাপন স্ক্রিপ্টে গৃহীত হয়, তাই আপনি সরাসরি সেই নির্দেশিকা থেকে কোড কপি করতে পারেন।

একক অনুরোধে একাধিক অপারেশন করতে, আপনার সমস্ত ক্রিয়াকলাপ একটি অ্যারেতে সংগ্রহ করুন এবং তারপরে AdsApp.mutateAll এ কল করুন। mutateAll কলটি প্রথম আর্গুমেন্ট এবং বিকল্পগুলির একটি ঐচ্ছিক দ্বিতীয় আর্গুমেন্ট হিসাবে অপারেশনের অ্যারে নেয়, যার মধ্যে রয়েছে:

  • apiVersion : আপনি একটি কাস্টম API সংস্করণ নির্দিষ্ট করতে পারেন, যেমন V18 , যদি আপনি স্ক্রিপ্ট ডিফল্ট ছাড়া অন্য কোনো সংস্করণ ব্যবহার করতে চান। আপনি সেই সময়ে যে কোনও সর্বজনীনভাবে উপলব্ধ সংস্করণ ব্যবহার করতে পারেন৷
  • partialFailure : এই ক্ষেত্রটি true ডিফল্ট। যদি true তে সেট করা হয়, তাহলে বৈধ ক্রিয়াকলাপগুলি সঞ্চালিত হয় এবং ব্যর্থ অপারেশনগুলি ত্রুটি ফেরত দেয়। যদি false সেট করা হয়, তাহলে কোনো অপারেশন ব্যর্থ হলে, কোনো অপারেশন করা হয় না, কার্যকরভাবে এই অপারেশনের সেটটিকে পারমাণবিক করে তোলে।

এখানে একাধিক অপারেশন সহ একটি উদাহরণ রয়েছে যা একটি পারমাণবিক অনুরোধে একটি প্রচারাভিযানের বাজেট, প্রচারাভিযান এবং বিজ্ঞাপন গোষ্ঠী তৈরি করে৷

const operations = [];
const customerId = 'INSERT_CUSTOMER_ID_HERE';
const budgetId = `customers/${customerId}/campaignBudgets/-1`;
const campaignId = `customers/${customerId}/campaigns/-2`;
operations.push({
    campaignBudgetOperation: {
      create: {
        resourceName: budgetId,
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });
operations.push({
    campaignOperation: {
      create: {
        resourceName: campaignId,
        name: 'New Campaign ' + new Date(),
        advertisingChannelType: 'SEARCH',
        manualCpc: {},
        campaignBudget: budgetId,
        advertisingChannelType: 'DISPLAY',
        networkSettings: {
          targetContentNetwork: true
        }
      }
    }
  });
operations.push({
    adGroupOperation: {
      create: {
        campaign: campaignId,
        name: 'New AdGroup ' + new Date(),
        optimizedTargetingEnabled: true
      }
    }
  });
const results = AdsApp.mutateAll(
    operations, {partialFailure: false});