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

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

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

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

इस्तेमाल करने की शर्तें

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

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

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

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

{
  "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) बनाते समय या नए बनाए गए पैरंट संसाधनों को रेफ़र करते समय मान्य होते हैं. उदाहरण के लिए, AdGroupCriterionOperation.remove को कॉल करते समय, AddBatchJobOperations में, कुछ समय के लिए इस्तेमाल किए जाने वाला नेगेटिव आईडी पास करने पर, RequestError.RESOURCE_NAME_MALFORMED गड़बड़ी दिखती है.