AdWords और Merchant Center उप-खाते बनाना और उन्हें लिंक करना

1. परिचय

इस कोडलैब में, आपको Shopping के लिए Content API और AdWords API के साथ काम करने के बारे में बुनियादी जानकारी मिलेगी. साथ ही, दोनों का इस्तेमाल करने वाला ऐप्लिकेशन बनाने का तरीका भी बताया जाएगा. खास तौर पर, आपको एक कमांड-लाइन ऐप्लिकेशन बनाना होगा, जो AdWords खाता और Merchant Center खाता बनाएगा और उन्हें लिंक करेगा.

आपको इनके बारे में जानकारी मिलेगी

  • मैनेजर खाते से मैनेज किए जाने वाले AdWords खाते बनाने का तरीका.
  • एक से ज़्यादा क्लाइंट वाले खाते से मैनेज किए जाने वाले Merchant Center खाते बनाने का तरीका.
  • Merchant Center खाते को AdWords खाते से लिंक करने का अनुरोध करने का तरीका.
  • किसी AdWords खाते में, Merchant Center खाते को जोड़ने का अनुरोध स्वीकार करने का तरीका.

आपको इन चीज़ों की ज़रूरत होगी

2. सेट अप करना

कोड डाउनलोड करें

इस कोडलैब का पूरा कोड डाउनलोड करने के लिए, इस लिंक पर क्लिक करें:

डाउनलोड की गई ज़िप फ़ाइल को अनपैक करें. इससे एक रूट फ़ोल्डर (shopping-account-linking-master) अनपैक हो जाएगा. इसमें Maven प्रोजेक्ट के साथ-साथ, आपके लिए ज़रूरी सभी संसाधन शामिल होंगे. यहां दी गई सबडायरेक्ट्री पर खास ध्यान दें:

  • src/main/java, Maven प्रोजेक्ट का सोर्स रूट है. इसमें एक कोड स्केलेटन है, जिस पर काम किया जा सकता है.
  • src/main/java/solution में पूरा समाधान होता है.

ज़रूरी पैकेज इंस्टॉल करना और बिल्ड करना

अगर Eclipse या IntelliJ जैसे Maven-aware IDE का इस्तेमाल किया जा रहा है, तो निकाले गए फ़ोल्डर को Maven प्रोजेक्ट के तौर पर इंपोर्ट किया जा सकता है. इसके बाद, प्रोजेक्ट को सामान्य तरीके से कंपाइल किया जा सकता है.

अगर कमांड लाइन से Maven का इस्तेमाल किया जा रहा है, तो ज़रूरी पैकेज वापस पाने और अनपैक किए गए प्रोजेक्ट (shopping-account-linking-master) के रूट फ़ोल्डर से प्रोजेक्ट को कंपाइल करने के लिए, यह कमांड चलाएं:

mvn compile

3. पुष्टि करने की सुविधा सेट अप करना

इस चरण में, हम कोई कोडिंग नहीं करेंगे. इसके बजाय, हम ऐसी फ़ाइलें सेट अप करेंगे जिनमें AdWords API और Shopping के लिए Content API की पुष्टि करने वाले सही टोकन शामिल हों.

AdWords API का पुष्टि करने का तरीका सेट अप करना

इस कोडलैब में, क्लाइंट लाइब्रेरी के तौर पर उसी क्रेडेंशियल लोडिंग का इस्तेमाल किया जाता है. इसलिए, अगर आपने अपने मैनेजर खाते के साथ Java के लिए Google Ads API क्लाइंट लाइब्रेरी का पहले से इस्तेमाल किया है, तो आपको पहले से सेट अप किया जा चुका होगा. इसके अलावा, Java के लिए Google Ads API की क्लाइंट लाइब्रेरी का इस्तेमाल शुरू करने के लिए, पहले से तीसरे चरण तक का तरीका अपनाएं.

Content API का पुष्टि करने का तरीका सेट अप करना

अगर आपके पास पहले से कोई सेवा खाता कुंजी नहीं है, तो:

  1. अपने एक से ज़्यादा क्लाइंट वाले खाते के लिए Merchant Center पर जाएं और ओवरफ़्लो मेन्यू से Content API चुनें: 89507d635c51a3dc.png
  2. पुष्टि करें को चुनें. इसके बाद, नीले रंग के + बटन पर क्लिक करें: c465d8dc314ec158.png
  3. Google Cloud Platform और Google API की सेवा की शर्तें स्वीकार करने के बाद, आपका ब्राउज़र अपने-आप एक JSON फ़ाइल डाउनलोड कर लेगा. इसमें, आपके सेवा खाते की नई कुंजी होगी.

अब सेवा खाते की मदद से, Shopping के सैंपल के लिए पुष्टि करने की सुविधा सेट अप करने के लिए दिए गए निर्देशों का पालन करें. इसका मतलब है कि आपकी सेवा खाता कुंजी की कॉपी, आपकी होम डायरेक्ट्री के इस पाथ में होनी चाहिए: shopping-samples/content/service-account.json. सैंपल कॉन्फ़िगरेशन को सेट अप करने की ज़रूरत नहीं है, बशर्ते आपको इस कोडलैब को पूरा करने के बाद सैंपल आज़माने में दिलचस्पी न हो!

इसे आज़माएं

अब आपके पास पुष्टि करने वाले टोकन सही जगहों पर मौजूद हैं. इसलिए, सैंपल चलाकर देखें. अगर कमांड लाइन पर Maven का इस्तेमाल किया जा रहा है, तो ये कमांड चलाएं:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

अगर आपको सेशन ऑब्जेक्ट न दिए जाने के बारे में गड़बड़ी का कोई मैसेज मिलता है, तो इसका मतलब है कि आपके पुष्टि करने वाले टोकन सही जगह पर हैं और सही तरीके से काम कर रहे हैं! अगर ऐसा नहीं होता है, तो आपको गड़बड़ी का जो मैसेज मिलेगा उससे आपको पता चल जाएगा कि कौनसे क्रेडेंशियल काम नहीं कर रहे हैं और किस फ़ाइल को ठीक करना है.

4. एपीआई से कनेक्ट करना

अब आपके पास उन दो एपीआई के लिए पुष्टि करने वाले मान्य टोकन हैं जिनका इस्तेमाल हम करेंगे. अब असल कोड भरने की प्रोसेस शुरू करते हैं. हम पुष्टि करने वाले टोकन का इस्तेमाल करके, सेशन ऑब्जेक्ट बनाने से शुरुआत करेंगे. आगे के चरणों में, हम इन सेशन ऑब्जेक्ट का इस्तेमाल करके, हर एपीआई की अलग-अलग सेवाओं और तरीकों को ऐक्सेस करेंगे.

Content API सेशन ऑब्जेक्ट बनाना

Content API सेशन बनाने के लिए, हम एक ShoppingContent.Builder ऑब्जेक्ट बनाएंगे. इसके बाद, इसका इस्तेमाल करके सही ShoppingContent ऑब्जेक्ट बनाएंगे. सौभाग्य से, पहले कोड को बनाने के लिए ज़रूरी सभी चीज़ें, कोड स्केलेटन में पहले से ही मौजूद हैं. इसलिए, हमें इसे इस तरह से इकट्ठा करना होगा:

SolutionRunner.java

// TODO(sessions): Create a ShoppingContent object using ShoppingContent.Builder.
contentApiSession =
    new ShoppingContent.Builder(httpTransport, jsonFactory, contentApiCredential)
        .setApplicationName("Linking AdWords and Merchant Center Accounts Codelab")
        .build();

ऐप्लिकेशन का नाम सेट करना ज़रूरी नहीं है. हालांकि, इससे build() मेथड को कॉल करने से पहले, ShoppingContent.Builder ऑब्जेक्ट की मदद से अपनी पसंद के विकल्प सेट करने का तरीका पता चलता है.

AdWords API सेशन ऑब्जेक्ट बनाना

इसी तरह, AdWordsSession ऑब्जेक्ट बनाने के लिए AdWordsSession.Builder क्लास है. यहां मुख्य अंतर यह है कि कॉन्फ़िगरेशन के विकल्पों को सीधे बिल्डर पर सेट करने के बजाय, हम उन्हें fromFile() तरीके का इस्तेमाल करके, ads.properties फ़ाइल से लोड करेंगे. हमने इस फ़ाइल को पिछले चरण में सेट अप किया था.

SolutionRunner.java

// TODO(sessions): Create a AdWordsSession object using AdWordsSession.Builder.
adWordsSession =
    new AdWordsSession.Builder()
        .fromFile()
        .withOAuth2Credential(adwordsOAuth2Credential)
        .build();

इसे आज़माएं

अगर Maven प्रोजेक्ट को कमांड-लाइन से चलाया जा रहा है, तो हम उसे फिर से बनाने और चलाने के लिए, पिछले सेक्शन में दिए गए निर्देशों का इस्तेमाल करेंगे:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

इस बार, आपको कोई गड़बड़ी नहीं दिखेगी. हालांकि, आपको कोई दिलचस्प आउटपुट भी नहीं मिलेगा. हम नए खाते बनाने और लिंक करने के लिए, एपीआई को कॉल करते समय इसे जोड़ देंगे.

5. मैनेज किया जाने वाला नया AdWords खाता बनाना

अब हमने अपने एपीआई सेशन ऑब्जेक्ट बना लिए हैं. अब हम उन खातों को बनाएंगे जिन्हें हमें लिंक करना है. हम AdWords से शुरुआत करेंगे और अपने मैनेजर खाते में एक टेस्ट खाता बनाएंगे.

ManagedCustomerService को ऐक्सेस करना

AdWords API में, हम उपलब्ध अलग-अलग सेवाओं को ऐक्सेस करते हैं. इसके लिए, हम पहले स्टैटिक getInstance() तरीके का इस्तेमाल करके, AdWordsServices क्लास का एक इंस्टेंस वापस लाते हैं. इस इंस्टेंस का इस्तेमाल करके, हम get() तरीके से उन सेवाओं के लिए क्लाइंट बना सकते हैं. इसमें दो आर्ग्युमेंट होते हैं: वह सेशन जिसके लिए क्लाइंट बनाना है और पसंदीदा सेवा के लिए इंटरफ़ेस.

SolutionRunner.java

// TODO(newAWaccount): Using the ManagedCustomerService, create a new testing AdWords account
// under the given manager account.

AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();

ManagedCustomerServiceInterface managedCustomerService =
    adWordsServices.get(adWordsSession, ManagedCustomerServiceInterface.class);

यहां हम ManagedCustomerService को ऐक्सेस करते हैं. इससे, किसी मैनेजर खाते से AdWords "ग्राहक" (खाते) मैनेज किए जा सकते हैं.

खाते की नई सेटिंग तय करना

सबसे पहले, हम ManagedCustomer ऑब्जेक्ट बनाएंगे. इसमें हमारे नए खाते की सेटिंग शामिल होंगी. हम इस कोडलैब के लिए एक टेस्ट खाता बनाएंगे. इसमें मुद्रा के तौर पर डॉलर और टाइम ज़ोन के तौर पर अमेरिका के पश्चिमी तट का टाइम ज़ोन सेट किया जाएगा.

SolutionRunner.java

Random rand = new Random();
long run = rand.nextLong();

ManagedCustomer newAdWordsAccount = new ManagedCustomer();
newAdWordsAccount.setName(String.format("AdWords Account Created by Run %d", run));
newAdWordsAccount.setTestAccount(true);
newAdWordsAccount.setCurrencyCode("USD");
newAdWordsAccount.setDateTimeZone("America/Los_Angeles");

हम एक रैंडम नंबर भी बनाते हैं, जिसे हम खाते के नाम में शामिल करते हैं. ऐसा इसलिए किया जाता है, ताकि हम यहां बनाए जाने वाले AdWords खाते को उस Merchant Center खाते से मैच कर सकें जिसे हम बाद में बनाएंगे. इससे, समस्या हल होने के बाद, हम उन्हें विज़ुअल तौर पर जांच सकेंगे और यह पक्का कर सकेंगे कि दोनों खाते सचमुच लिंक हो गए हैं.

मैनेज किया जा सकने वाला नया खाता बनाना

नया खाता बनाने के लिए, हम ADD ऑपरेशन की जानकारी देने के लिए, ManagedCustomerOperation का इस्तेमाल करेंगे:

SolutionRunner.java

ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(newAdWordsAccount);
operation.setOperator(Operator.ADD);

इसके बाद, हम ManagedCustomerService ऑब्जेक्ट के mutate() तरीके का इस्तेमाल करके, ऑपरेशन करेंगे. इस तरीके में, कई कार्रवाइयां की जा सकती हैं. हालांकि, यहां हमें सिर्फ़ एक कार्रवाई करनी है. mutate() तरीके का नतीजा, ManagedCustomer की सूची वाली वैल्यू होती है. यहां यह एक ग्राहक की सूची होगी, जो कि हमने बनाया है. हम आने वाले समय में इस्तेमाल करने के लिए, उस नए खाते का आईडी वापस ले लेंगे. साथ ही, हम उसे प्रिंट भी कर लेंगे, ताकि हम उसे अपने समाधान के आउटपुट के हिस्से के तौर पर देख सकें.

SolutionRunner.java

ManagedCustomerReturnValue result =
    managedCustomerService.mutate(new ManagedCustomerOperation[] {operation});
Long adWordsId = result.getValue()[0].getCustomerId();
System.out.printf("Created new AdWords account %d%n", adWordsId);

इसे आज़माएं

पहले की तरह, समाधान को चलाने की कोशिश करें. अगर कमांड लाइन से Maven का इस्तेमाल किया जा रहा है, तो:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

अगर सब कुछ ठीक से हो जाता है, तो आपको अब भी कोई गड़बड़ी नहीं दिखेगी. साथ ही, इस बार हमें अपने बनाए गए नए AdWords खाते का आईडी दिखेगा. अपने मैनेजर खाते के लिए AdWords साइट पर जाएं. वहां आपको नया खाता भी दिखेगा!

6. नया Merchant Center उप-खाता बनाना

इस चरण में, हम Merchant Center का वह उप-खाता बनाएंगे जिसे हम पिछले चरण में बनाए गए AdWords खाते से लिंक करेंगे. सब-खाता बनाने के बाद, लिंक करने का अनुरोध करने के बजाय, हम खाता बनाते समय ही लिंक करने का अनुरोध कर सकते हैं. इसकी वजह यह है कि हमारे पास उससे जुड़े AdWords खाते का आईडी पहले से मौजूद होता है.

नए उप-खाते की सेटिंग तय करना

AdWords API के उलट, Account मॉडल क्लास के सेटर, ऑब्जेक्ट दिखाते हैं. इसलिए, हम नए Account ऑब्जेक्ट पर उनके कॉल को चेन कर सकते हैं. हम AdWords खाता बनाते समय जनरेट किए गए रैंडम नंबर का इस्तेमाल, नए Merchant Center खाते के नाम के तौर पर भी करेंगे.

SolutionRunner.java

Account newMcAccount = new Account()
    .setName(String.format("Merchant Center Account Created by Run %d", run))
    .setAdwordsLinks(
        ImmutableList.of(
            new AccountAdwordsLink()
                .setAdwordsId(BigInteger.valueOf(adWordsId))
                .setStatus("active")));

इस चरण के शुरुआती हिस्से में बताया गया था कि हमारे पास मैनेज किए जा रहे नए खाते का AdWords आईडी पहले से है. इसलिए, अब हम उस आईडी को नए सब-खाते के लिए AdwordsLinks की सूची में जोड़ सकते हैं. नया उप-खाता बनाने पर, इस लिंक का अनुरोध अपने-आप किया जाएगा और यह AdWords API में उपलब्ध हो जाएगा.

नया सब-खाता बनाना

Content API में, हम Accounts सेवा को ऐक्सेस करने के लिए, सेशन ऑब्जेक्ट के accounts() तरीके को कॉल करते हैं. इसके बाद, ऑपरेशन ऑब्जेक्ट सेट अप करने के बजाय, सीधे insert() तरीके को कॉल करते हैं. इस तरीके में दो आर्ग्युमेंट होते हैं: एक से ज़्यादा क्लाइंट वाले उस खाते का आईडी जिसमें नया सब-खाता बनाना है और Account ऑब्जेक्ट, जिसमें आपकी पसंद की सेटिंग होती हैं:

SolutionRunner.java

newMcAccount = contentApiSession.accounts().insert(mcaId, newMcAccount).execute();

System.out.printf("Created new Merchant Center account %s%n", newMcAccount.getId());

insert() तरीका, Account ऑब्जेक्ट दिखाता है. इसमें नए उप-खाते की सेटिंग होती हैं. हम अपने मूल Account ऑब्जेक्ट को ओवरराइट कर देते हैं, क्योंकि दिखाए गए वर्शन में एक अहम जानकारी शामिल होती है: नए सब-खाते का आईडी. हम इसे अपने समाधान के आउटपुट में प्रिंट करते हैं, ताकि हम अपना समाधान चला सकें और फिर पुष्टि कर सकें कि Merchant Center में नया उप-खाता मौजूद है.

इसे आज़माएं

पहले की तरह, समाधान को चलाने की कोशिश करें. अगर कमांड लाइन से Maven का इस्तेमाल किया जा रहा है, तो:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

अगर सब कुछ ठीक से हो जाता है, तो आपको अब भी कोई गड़बड़ी नहीं दिखेगी. साथ ही, इस बार हमें नए AdWords खाते और नए Merchant Center खाते, दोनों के आईडी दिखेंगे. एक से ज़्यादा क्लाइंट वाले खाते में नया उप-खाता देखने के लिए, Merchant Center में जाएं.

7. AdWords खाते से लिंक स्वीकार करना

आखिरी चरण में, हमने एक नया Merchant Center सब-खाता बनाया और साथ ही, अपने नए AdWords खाते को लिंक करने का अनुरोध किया. इस चरण में, हम अनुरोध किए गए लिंक को स्वीकार करने के लिए, AdWords API का इस्तेमाल करके प्रोसेस पूरी कर देंगे.

CustomerService को ऐक्सेस करना

पहले की तरह, हम CustomerService के लिए क्लाइंट पाने के लिए AdWordsServices क्लास का इस्तेमाल करेंगे. हालांकि, क्लाइंट बनाने से पहले, हम अपने AdWords सेशन ऑब्जेक्ट को बदलते हैं, ताकि आने वाले समय में मैनेज किए जा रहे खाते के बजाय, नए मैनेज किए जा रहे खाते का इस्तेमाल किया जा सके. आखिरकार, Merchant Center खाते ने मैनेजर खाते को , बल्कि मैनेज किए जा रहे खाते से लिंक करने का अनुरोध किया था.

SolutionRunner.java

// TODO(acceptLink): Using the mutateServiceLinks method in CustomerService, accept the
// proposed link between the new AdWords account and the new Merchant Center account.

adWordsSession.setClientCustomerId(adWordsId.toString());

CustomerServiceInterface customerService =
    adWordsServices.get(adWordsSession, CustomerServiceInterface.class);

जैसे, जब हमने नया AdWords खाता बनाया था, तो हमने एक ServiceLink ऑब्जेक्ट बनाया था, जिसमें लिंक सेटिंग थी. इसके बाद, हमने एक ServiceLinkOperation ऑब्जेक्ट बनाया था, जिसमें ज़रूरी कार्रवाई के बारे में बताया गया था. यहां, हम सेवा के उस लिंक को MERCHANT_CENTER खाते से SET खाते पर ले जाना चाहते हैं जिसकी पुष्टि बाकी है.ACTIVE serviceLinkId सेटिंग के लिए, हम उस Merchant Center खाते के आईडी का इस्तेमाल करेंगे जिसे हमने अभी बनाया है. इस आईडी का इस्तेमाल, AdWords में सेवा लिंक के आईडी के लिए किया जाता है.

SolutionRunner.java

ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(newMcAccount.getId().longValue());
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);

ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
op.setOperand(serviceLink);

आखिर में, हम ऑपरेशन करने के लिए CustomerService ऑब्जेक्ट के mutateServiceLinks() तरीके को कॉल करेंगे. पहले की तरह, इसमें सेवा लिंक करने के कई ऑपरेशन होते हैं. इस बार, यह तरीका सीधे तौर पर सेवा के लिंक की सूची दिखाता है. हो सकता है कि इन लिंक में बदलाव हुआ हो. इसलिए, हम उस सूची को लूप करके, अपने समाधान का नतीजा प्रिंट कर देंगे. हमने सिर्फ़ एक ऑपरेशन तय किया है, इसलिए आपको आउटपुट में सिर्फ़ एक लिंक दिखेगा.

SolutionRunner.java

ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d, type '%s' updated to status: %s.%n",
      mutatedServiceLink.getServiceLinkId(),
      mutatedServiceLink.getServiceType(),
      mutatedServiceLink.getLinkStatus());
}

इसे आज़माएं

पहले की तरह, समाधान को चलाने की कोशिश करें. अगर कमांड लाइन से Maven का इस्तेमाल किया जा रहा है, तो:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

अगर सब कुछ ठीक से हो जाता है, तो आपको अब भी कोई गड़बड़ी नहीं दिखेगी. साथ ही, इस बार हमें एक नोट भी दिखेगा कि सेवा का लिंक चालू करने के लिए अपडेट किया गया था. AdWords और Merchant Center खाते देखें और दोबारा पुष्टि करें कि खाते अब लिंक हो गए हैं.

8. किसी थीम के वैरिएशन

कोडलैब पूरा करने के लिए बधाई! अब आपके पास पूरी तरह से काम करने वाला समाधान है. आइए, कुछ उदाहरणों की मदद से देखें कि इस कोडलैब में देखे गए ज़्यादातर एपीआई का इस्तेमाल करने के लिए, इसमें कैसे बदलाव किया जा सकता है या इसे कैसे बढ़ाया जा सकता है.

कोडलैब में, हमने पहले AdWords खाता बनाया, ताकि Merchant Center खाता बनाते समय, लिंक करने का अनुरोध करने के लिए, हम उसकी जानकारी का इस्तेमाल कर सकें. हालांकि, अगर Merchant Center खाता पहले से मौजूद है, तो आपको इसके कॉन्फ़िगरेशन को अपडेट करना होगा. सबसे पहले, Merchant Center खाता बनाने के लिए अपने कोड में बदलाव करें. इसके बाद, AdWords खाता बनाने के बाद, लिंक करने का अनुरोध करने के लिए, उसके कॉन्फ़िगरेशन को अपडेट करें.

फ़िलहाल, ऐप्लिकेशन सिर्फ़ एपीआई कॉल में गड़बड़ी न होने को सफलता के संकेत के तौर पर मानता है. नए Merchant Center और AdWords खातों के लिए लिंक की जानकारी देखने के लिए, उदाहरण को बड़ा करें और देखें कि लिंक असल में चालू है या नहीं.

आपके लिए कुछ भी नामुमकिन नहीं है

अगर आपको लगता है कि इसमें और बदलाव किए जा सकते हैं, तो उन्हें आज़माएं! अगर आपको अपने आइडिया के लिए रेफ़रंस कोड चाहिए, तो Google Shopping के सैंपल और Google Ads Java क्लाइंट लाइब्रेरी सोर्स में examples डायरेक्ट्री देखें.