অস্থায়ী আইডি ব্যবহার করুন

অস্থায়ী সম্পদের নাম

BatchJobService অস্থায়ী রিসোর্স নাম সমর্থন করে, যা একই ব্যাচ জবের মধ্যে পরবর্তী অপারেশনগুলিতে রেফারেন্স করা যেতে পারে—এমনকি sequence_token দিয়ে আপলোড করা একাধিক ধারাবাহিক AddBatchJobOperations অনুরোধের ক্ষেত্রেও। এটি আপনাকে সার্ভার-সাইড আইডি বরাদ্দ করার আগে একটি একক ব্যাচ জবে একটি ক্যাম্পেইন এবং এর উপর নির্ভরশীল অ্যাড গ্রুপ, বিজ্ঞাপন এবং ক্রাইটেরিয়া তৈরি করতে দেয়। নিম্নলিখিত সাধারণ নিয়ম এবং উদাহরণে, একটি একক অনুরোধ বলতে একটি সম্পূর্ণ BatchJob বোঝানো হয়েছে, যা তার সমস্ত AddBatchJobOperations আপলোড জুড়ে বিস্তৃত।

নতুন রিসোর্সের resource_name এ একটি নেগেটিভ আইডি ব্যবহার করার মাধ্যমে আপনি এটি করতে পারেন। উদাহরণস্বরূপ, ধরুন আপনি একটি ক্যাম্পেইন তৈরি করেছেন এবং এর রিসোর্স নেম হিসেবে customers/<YOUR_CUSTOMER_ID>/campaigns/-1 উল্লেখ করেছেন। পরবর্তী কোনো ধাপে যখন আপনি অ্যাড গ্রুপটি তৈরি করবেন, তখন আপনি সেই রিসোর্স নেম দিয়ে এটিকে রেফারেন্স করতে পারবেন এবং আপনার উল্লেখ করা -1 অংশটি তৈরি হওয়া ক্যাম্পেইনের আসল আইডি দ্বারা স্বয়ংক্রিয়ভাবে প্রতিস্থাপিত হয়ে যাবে।

অস্থায়ী রিসোর্স নাম ব্যবহার করার সময় কিছু বিষয় মনে রাখতে হবে:

  • একটি অস্থায়ী রিসোর্স নাম শুধুমাত্র কোনো রিসোর্সে সংজ্ঞায়িত করার পরেই ব্যবহার করা যায়। নিম্নলিখিত উদাহরণে, অপারেশনগুলির তালিকায় অ্যাড গ্রুপ অপারেশনটিকে ক্যাম্পেইন অপারেশনের পরে রাখতে হবে।
  • অস্থায়ী রিসোর্স নামগুলো বিভিন্ন জব বা মিউটেট রিকোয়েস্ট জুড়ে মনে রাখা হয় না। পূর্ববর্তী কোনো জব বা মিউটেট রিকোয়েস্টে তৈরি করা রিসোর্সকে রেফারেন্স করতে, এর আসল রিসোর্স নামটি ব্যবহার করুন।
  • একটি একক জব বা মিউটেট রিকোয়েস্টের জন্য, প্রতিটি টেম্পোরারি রিসোর্স নামে অবশ্যই একটি অনন্য নেগেটিভ সংখ্যা ব্যবহার করতে হবে, এমনকি যদি সেগুলি ভিন্ন রিসোর্স টাইপেরও হয়। যদি একটি টেম্পোরারি আইডি একটি একক জব বা মিউটেট রিকোয়েস্টে পুনরায় ব্যবহার করা হয়, তাহলে একটি এরর রিটার্ন করা হয়।

উদাহরণ

ধরুন, আপনি একটিমাত্র এপিআই (API) অনুরোধের মাধ্যমে একটি ক্যাম্পেইন, একটি অ্যাড গ্রুপ এবং একটি অ্যাড যোগ করতে চান। সেক্ষেত্রে, আপনি আপনার অনুরোধের জন্য নিম্নলিখিতটির অনুরূপ একটি কাঠামো তৈরি করবেন:

mutate_operations: [
  {
    campaign_operation: {
      create: {
        resource_name: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1",
        ...
      }
    }
  },
  {
    ad_group_operation: {
      create: {
        resource_name: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2",
        campaign: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1"
        ...
      }
    }
  },
  {
    ad_group_ad_operation: {
      create: {
        ad_group: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2"
        ...
      }
    }
  },
]

অ্যাড গ্রুপের জন্য একটি নতুন অস্থায়ী আইডি ব্যবহার করা হয়, কারণ আমরা ক্যাম্পেইনের জন্য ব্যবহৃত -1 আইডিটি পুনরায় ব্যবহার করতে পারি না। একটি অ্যাড গ্রুপ অ্যাড তৈরি করার সময়ও আমরা এই অ্যাড গ্রুপটিকে রেফারেন্স হিসেবে ব্যবহার করি। অ্যাড গ্রুপটি নিজে রিকোয়েস্টের পূর্ববর্তী একটি অপারেশনে ক্যাম্পেইনের জন্য নির্ধারিত রিসোর্স নেমটিকে রেফারেন্স করে, কিন্তু ad_group_ad_operation এর মধ্যে থাকা resource_name প্রয়োজন হয় না, কারণ পরবর্তী কোনো অপারেশন এটিকে রেফারেন্স করছে না।

ব্যাচ জবে ত্রুটি পরিচালনা

যেহেতু একটি ব্যাচ জবের স্ট্যান্ডার্ড অপারেশনগুলো পার্শিয়াল ফেইলর এনাবলড অবস্থায় এক্সিকিউট হয় ( অ্যাটোমিক সাব-ব্যাচ ছাড়া), তাই যদি একটি টেম্পোরারি আইডি সহ কোনো প্যারেন্ট রিসোর্স ভ্যালিডেশনে ব্যর্থ হয়, তবে সেই টেম্পোরারি আইডিকে রেফারেন্সকারী যেকোনো ডিপেন্ডেন্ট চাইল্ড অপারেশন NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS এর সাথে ব্যর্থ হয়। একই ব্যাচ জবের মধ্যে একাধিক create অপারেশনে একই নেগেটিভ আইডি পুনরায় ব্যবহার করলে NewResourceCreationError.DUPLICATE_TEMP_IDS রিটার্ন করে। টেম্পোরারি আইডি শুধুমাত্র রিসোর্স তৈরি করার ( create ) সময় বা নতুন তৈরি করা প্যারেন্ট রিসোর্সকে রেফারেন্স করার সময় বৈধ থাকে; উদাহরণস্বরূপ, AddBatchJobOperations কল করার সময় AdGroupCriterionOperation.remove এ একটি নেগেটিভ টেম্পোরারি আইডি পাস করলে RequestError.RESOURCE_NAME_MALFORMED রিটার্ন করে।