মিউটেট

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

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

এই নির্দেশিকাটি অনুসরণ করার আগে আপনার 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 রেফারেন্স ডকুমেন্টেশনটি দেখতে পারেন যাতে এর সমস্ত বৈধ ক্ষেত্রগুলির একটি তালিকা দেখতে পারেন, এবং তারপরে উপযুক্ত ক্ষেত্রগুলি পূরণ করতে পারেন, অথবা একটি উপযুক্ত বস্তু তৈরি করতে আপনার স্ক্রিপ্টে কাস্টম জাভাস্ক্রিপ্ট কোড লিখতে পারেন।

বিকল্পভাবে, আপনি প্রচারাভিযানের বাজেটের জন্য "Try this" বৈশিষ্ট্যটি ব্যবহার করে গতিশীলভাবে একটি অপারেশন তৈরি করার চেষ্টা করতে পারেন, যা আপনাকে কোন ক্ষেত্রগুলি যোগ করতে চান তা বেছে নিয়ে গতিশীলভাবে একটি অনুরোধ বডি তৈরি করতে দেয়। তারপরে আপনি জেনারেট করা ফলাফল থেকে অপারেশনের বিষয়বস্তু বের করতে পারেন এবং অপারেশনের ধরণ নির্দিষ্ট করার পরে এটি আপনার 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 Ads স্ক্রিপ্ট ডকুমেন্টেশন lowerCamelCase ব্যবহার করছে। এই দুটি ক্ষেত্রেই Google Ads স্ক্রিপ্টে গৃহীত হয়, তাই আপনি সরাসরি সেই নির্দেশিকা থেকে কোড অনুলিপি করতে পারেন।

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

  • apiVersion : আপনি যদি স্ক্রিপ্ট ডিফল্ট ছাড়া অন্য কোনও সংস্করণ ব্যবহার করতে চান, তাহলে আপনি একটি কাস্টম API সংস্করণ, যেমন V23 , নির্দিষ্ট করতে পারেন। আপনি সেই সময়ে সর্বজনীনভাবে উপলব্ধ যেকোনো সংস্করণ ব্যবহার করতে পারেন।
  • 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});