AdGroupCriterion.listing_group या AssetGroupListingGroupFilter के संदर्भ में लिस्टिंग ग्रुप फ़िल्टर के साथ काम करते समय, इंटिग्रेशन को डिज़ाइन करते समय इन बातों का ध्यान रखें.
बैच को बांटना
अगर किसी बैच जॉब में ऐसे ऑपरेशन हैं जिनमें विज्ञापन ग्रुप की शर्तें या ऐसेट ग्रुप के लिस्टिंग ग्रुप फ़िल्टर शामिल हैं, तो Google Ads API सर्वर को मिलने पर, बैच जॉब में मौजूद ऑपरेशन को कई सब-बैच में बांट दिया जाता है. बैच जॉब में स्टैंडर्ड कार्रवाइयों के उलट, लिस्टिंग ग्रुप फ़िल्टर करने की सुविधा वाली कार्रवाइयों वाले हर सब-बैच को अलग-अलग माना जाता है.
लिस्टिंग ग्रुप फ़िल्टर वाली बैच जॉब को सब-बैच में बांटने का तरीका, इन बातों से तय होता है:
- लिस्टिंग ग्रुप फ़िल्टर करने की सुविधा का टाइप
- लिस्टिंग ग्रुप फ़िल्टर,
AdGroupयाAssetGroupको टारगेट कर रहा है - कार्रवाइयों का क्रम
देखें कि कार्रवाइयों को किस तरह ग्रुप किया गया है:
- एक ही
AssetGroupको टारगेट करने वाले सभीAssetGroupListingGroupFilterOperationऑपरेशन (create,update, औरremove) को एक साथ एक सब-बैच में ग्रुप किया जाता है. इसमें ऐसा नहीं होता कि कुछ ऑपरेशन पूरे हो जाएं और कुछ अधूरे रह जाएं. - एक ही
AdGroupको टारगेट करने वालीLISTING_GROUPशर्त (AdGroupCriterion.listing_group) के लिए, लगातार होने वाले सभीAdGroupCriterionOperationऑपरेशन (create,update, औरremove) को एक साथ एक सब-बैच में ग्रुप किया जाता है. इसमें, कुछ ऑपरेशन के पूरा न होने की समस्या नहीं होती. - इसके बाद होने वाले अन्य सभी ऑपरेशन, नॉन-ऐटॉमिक सब-बैच में एक साथ ग्रुप किए जाते हैं. इन्हें पार्शियल फ़ेलियर बिहेवियर भी कहा जाता है.
इस डायग्राम में इस कॉन्सेप्ट को समझाया गया है. हर ग्रे बॉक्स, Google Ads API का इस्तेमाल करके सबमिट किए गए बैच जॉब को दिखाता है. ग्रे बॉक्स में, अलग-अलग कार्रवाइयों को रंग के हिसाब से ग्रुप बनाया जाता है. इससे उन सब-बैच को दिखाया जाता है जिन्हें Google Ads API सर्वर बनाता है. हर ग्रे बॉक्स में कार्रवाइयों का क्रम, उस क्रम से मेल खाता है जिसमें कार्रवाइयों को बैच जॉब में जोड़ा गया होगा.
सीमाएं
बैच जॉब के संदर्भ में लिस्टिंग ग्रुप फ़िल्टर के साथ काम करते समय, ये सीमाएं लागू होती हैं:
- एक ही
AdGroupको टारगेट करने वालीLISTING_GROUPशर्तों (AdGroupCriterion.listing_group) के लिए, लगातारAdGroupCriterionOperationकार्रवाइयों (create,update, औरremove) के एक ऐटॉमिक सब-बैच में 20,000 से ज़्यादा कार्रवाइयां नहीं हो सकतीं. हालांकि, हमारा सुझाव है कि 10,000 से ज़्यादा ऑपरेशन न करें. हरAddBatchJobOperationsRequestमें ज़्यादा से ज़्यादा 10,000 कार्रवाइयां की जा सकती हैं. इसलिए, 10,001 से 20,000 कार्रवाइयों वालेAdGroupसब-बैच को कम से कम दो लगातारAddBatchJobOperationsअनुरोधों में अपलोड किया जाना चाहिए. - एक ही
AssetGroupको टारगेट करने वालेAssetGroupListingGroupFilterOperationऑपरेशन (create,update, औरremove) के एक ही ऐटॉमिक सब-बैच में, 10,000 से ज़्यादा ऑपरेशन नहीं हो सकते. - इनमें से किसी भी सीमा का उल्लंघन करने पर, बैच जॉब को उस सब-बैच पर रोक दिया जाता है. इसके अलावा, अगर किसी सब-बैच के लिए, सर्वर की तय की गई बाइट साइज़ की सीमा को पार किया जाता है, तो भी बैच जॉब को रोक दिया जाता है. हालांकि, पहले से पूरे हो चुके सब-बैच पर इसका कोई असर नहीं पड़ता. वहीं, उल्लंघन करने वाले सब-बैच और उसके बाद के सभी सब-बैच में मौजूद सभी कार्रवाइयां,
InternalError.INTERNAL_ERRORकी गड़बड़ी के साथ फ़ेल हो जाती हैं.
समस्या का हल
बैच जॉब में लिस्टिंग ग्रुप को फ़िल्टर करने की कार्रवाइयों को एक लेन-देन के तौर पर प्रोसेस किया जाता है.
इस वजह से, कुछ कार्रवाइयों में गड़बड़ी होने पर कई कार्रवाइयां फ़ेल हो सकती हैं. इसके अलावा, BatchJob कार्रवाइयों को प्रोसेस करने के तरीके की वजह से, गड़बड़ियों की असल वजह, डाउनस्ट्रीम गड़बड़ियों से पहले या बाद के इंडेक्स पर दिख सकती है.
उदाहरण के लिए, ListBatchJobResults से मिले जवाब को प्रोसेस करते समय:
AdGroupCriterionOperationलिस्टिंग ग्रुप के लिए, आपको पता चल सकता है कि एक हीAdGroupको टारगेट करने वाले लगातार ऑपरेशन,CriterionError.LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION(Product group operations are atomic within the same ad group. This operation failed because another operation targeting the same ad group ID was invalid.) की वजह से पूरे नहीं हो सके.AssetGroupListingGroupFilterOperationऑपरेशन के लिए, आपको एक हीAssetGroupको टारगेट करने वाले लगातार ऑपरेशन,BatchJobError.ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILUREके साथ फ़ेल हो सकते हैं.
इन गड़बड़ियों से पता चलता है कि उस इंडेक्स पर मौजूद कार्रवाई को वापस ले लिया गया है. ऐसा इसलिए हुआ, क्योंकि उसी ऐटॉमिक सब-बैच में मौजूद कोई दूसरी कार्रवाई पूरी नहीं हो सकी. समस्या की असल वजह का पता लगाने के लिए, हर BatchJobResult में मौजूद status मैसेज को बार-बार देखें. ऐसा लेन-देन की गड़बड़ी के operation_index से पहले और बाद में करें. ऐसा उन कार्रवाइयों के लिए करें जो एक ही AdGroup या AssetGroup आईडी शेयर करती हैं.