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

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

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

इसके लिए, नई संसाधन की resource_name तय करें, ताकि नेगेटिव आईडी का इस्तेमाल किया जा सके. उदाहरण के लिए, मान लें कि आपने कोई कैंपेन बनाया है और उसका संसाधन नाम customers/<YOUR_CUSTOMER_ID>/campaigns/-1 के तौर पर तय किया है. बाद में विज्ञापन ग्रुप बनाते समय, उस संसाधन के नाम से इसे रेफ़रंस किया जा सकता है. साथ ही, आपने जो -1 तय किया है वह बनाए गए कैंपेन के असली आईडी से अपने-आप बदल जाएगा.

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

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

उदाहरण

मान लें कि आपको एक ही एपीआई अनुरोध में कोई कैंपेन, विज्ञापन ग्रुप, और विज्ञापन जोड़ना है. आपको अपने अनुरोध के लिए, यहां दिए गए स्ट्रक्चर जैसा स्ट्रक्चर बनाना होगा:

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 को फिर से इस्तेमाल नहीं कर सकते. विज्ञापन ग्रुप वाला विज्ञापन बनाते समय, हम इस विज्ञापन ग्रुप का रेफ़रंस भी देते हैं. विज्ञापन ग्रुप, उस संसाधन के नाम का रेफ़रंस देता है जिसे हमने अनुरोध में पहले कैंपेन के लिए सेट किया था. वहीं, resource_name में ad_group_ad_operation की ज़रूरत नहीं है, क्योंकि कोई अन्य कार्रवाई इसका रेफ़रंस नहीं दे रही है.

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

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