अस्थायी आईडी का इस्तेमाल करना

कुछ समय के लिए इस्तेमाल किए जाने वाले संसाधन के नाम

BatchJobService में, कुछ समय के लिए इस्तेमाल होने वाले संसाधन के नाम इस्तेमाल किए जा सकते हैं. इन्हें एक ही बैच जॉब में, बाद में होने वाली कार्रवाइयों में रेफ़रंस के तौर पर इस्तेमाल किया जा सकता है. इनमें, sequence_token के साथ अपलोड किए गए, क्रम में चलने वाले कई AddBatchJobOperations अनुरोध भी शामिल हैं. इससे आपको सर्वर-साइड आईडी असाइन किए जाने से पहले, एक ही बैच जॉब में कैंपेन और उस पर निर्भर विज्ञापन ग्रुप, विज्ञापन, और शर्तें बनाने की सुविधा मिलती है. यहां दिए गए सामान्य नियमों और उदाहरण में, एक अनुरोध का मतलब है कि BatchJob के सभी AddBatchJobOperations अपलोड को हटाने का अनुरोध.

एक ही बदलाव के अनुरोध या बैच जॉब में, नए बनाए गए संसाधन का रेफ़रंस देने के लिए, नए संसाधन के resource_name फ़ील्ड में नेगेटिव इंटीजर आईडी (जैसे, -1 या -2, 0 को छोड़कर) डालें. उदाहरण के लिए, बैच अनुरोध में कैंपेन बनाते समय, उसके संसाधन का नाम customers/CUSTOMER_ID/campaigns/-1 पर सेट करें. एक ही अनुरोध में बाद में कोई विज्ञापन ग्रुप बनाते समय, पैरंट कैंपेन के तौर पर customers/CUSTOMER_ID/campaigns/-1 का रेफ़रंस दें. एपीआई, -1 को कैंपेन बनाने के बाद जनरेट हुए असल कैंपेन आईडी से अपने-आप बदल देता है.

इस्तेमाल करने से जुड़ी पाबंदियां

कुछ समय के लिए इस्तेमाल होने वाले संसाधन के नामों का इस्तेमाल करते समय, इन नियमों का ध्यान रखें:

  • क्रम मायने रखता है: किसी अस्थायी संसाधन के नाम को तय करने के बाद ही, उसका रेफ़रंस दिया जा सकता है. ऑपरेशन की सूची में, डिपेंडेंट ऑपरेशन (जैसे कि विज्ञापन ग्रुप बनाना) उस ऑपरेशन के बाद दिखना चाहिए जो उसका पैरंट रिसॉर्स (जैसे कि कैंपेन बनाना) बनाता है.
  • एक अनुरोध या बैच-जॉब का दायरा: अस्थायी संसाधन के नाम, अलग-अलग जॉब या बदलाव के अनुरोधों में सेव नहीं रहते. किसी पिछली जॉब या बदलाव के अनुरोध में बनाए गए संसाधन का रेफ़रंस देने के लिए, सिस्टम से जनरेट किए गए उसके असल संसाधन नाम का इस्तेमाल करें.
  • ग्लोबल यूनीकनेस: किसी एक जॉब या बदलाव के अनुरोध में, हर अस्थायी संसाधन के नाम के लिए, सभी तरह के संसाधनों में एक यूनीक नेगेटिव इंटिजर का इस्तेमाल करना ज़रूरी है. उदाहरण के लिए, एक ही अनुरोध में किसी कैंपेन और विज्ञापन ग्रुप, दोनों को -1 असाइन नहीं किया जा सकता. एक ही अनुरोध या बैच जॉब में किसी अस्थायी आईडी का फिर से इस्तेमाल करने पर, NewResourceCreationError.DUPLICATE_TEMP_IDS गड़बड़ी का मैसेज दिखता है.

पेलोड का उदाहरण

मान लें कि आपको एक ही एपीआई अनुरोध या बैच जॉब में कोई कैंपेन, विज्ञापन ग्रुप, और विज्ञापन जोड़ना है. mutateOperations कलेक्शन को GoogleAdsService.Mutate या BatchJobService.AddBatchJobOperations अनुरोध पेलोड में स्ट्रक्चर किया जा सकता है. इसके लिए, यहां दिए गए REST JSON उदाहरण को देखें. इसमें, ज़रूरी संसाधन फ़ील्ड को शामिल नहीं किया गया है, ताकि उदाहरण को छोटा रखा जा सके:

{
  "mutateOperations": [
    {
      "campaignOperation": {
        "create": {
          "resourceName": "customers/CUSTOMER_ID/campaigns/-1"
        }
      }
    },
    {
      "adGroupOperation": {
        "create": {
          "resourceName": "customers/CUSTOMER_ID/adGroups/-2",
          "campaign": "customers/CUSTOMER_ID/campaigns/-1"
        }
      }
    },
    {
      "adGroupAdOperation": {
        "create": {
          "adGroup": "customers/CUSTOMER_ID/adGroups/-2"
        }
      }
    }
  ]
}

इस उदाहरण में ये मुख्य जानकारी दी गई है:

  • विज्ञापन ग्रुप, नए अस्थायी आईडी (-2) का इस्तेमाल करता है, क्योंकि -1 को पहले ही कैंपेन को असाइन किया जा चुका है.
  • विज्ञापन ग्रुप, customers/CUSTOMER_ID/campaigns/-1 का रेफ़रंस देता है, ताकि वह खुद को पिछले ऑपरेशन में बनाए गए कैंपेन से लिंक कर सके.
  • adGroupAdOperation, customers/CUSTOMER_ID/adGroups/-2 का रेफ़रंस देता है और resourceName को छोड़ देता है. ऐसा इसलिए होता है, क्योंकि अनुरोध में कोई भी कार्रवाई नए विज्ञापन का रेफ़रंस नहीं देती.

बैच जॉब में गड़बड़ी को ठीक करना

बैच जॉब में स्टैंडर्ड ऑपरेशन, कुछ हद तक गड़बड़ी के साथ लागू होते हैं. हालांकि, ऐटॉमिक सब-बैच में ऐसा नहीं होता. अगर अस्थायी आईडी वाले पैरंट रिसॉर्स की पुष्टि नहीं हो पाती है, तो उस अस्थायी आईडी का रेफ़रंस देने वाले सभी डिपेंडेंट चाइल्ड ऑपरेशन, NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS के साथ काम नहीं करते. एक ही बैच जॉब में कई create कार्रवाइयों के लिए, एक ही नेगेटिव आईडी का फिर से इस्तेमाल करने पर, NewResourceCreationError.DUPLICATE_TEMP_IDS दिखता है. अस्थायी आईडी सिर्फ़ तब मान्य होते हैं, जब संसाधन (create) बनाए जा रहे हों या नए बनाए गए पैरंट संसाधनों का रेफ़रंस दिया जा रहा हो. उदाहरण के लिए, AddBatchJobOperations को कॉल करते समय AdGroupCriterionOperation.remove में नेगेटिव अस्थायी आईडी पास करने पर, RequestError.RESOURCE_NAME_MALFORMED मिलता है.