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

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

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

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

इस्तेमाल करने से जुड़ी शर्तें

अस्थायी संसाधन के नाम इस्तेमाल करते समय, इन नियमों का ध्यान रखें:

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

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

मान लें कि आपको एक ही एपीआई अनुरोध या बैच जॉब में कोई कैंपेन, विज्ञापन ग्रुप, और विज्ञापन जोड़ना है. mutateOperations या BatchJobService.AddBatchJobOperations अनुरोध के पेलोड में, GoogleAdsService.Mutate ऐरे को स्ट्रक्चर किया जा सकता है. इसके लिए, यहां दिए गए 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 मिलता है.