इस गाइड में, क्लाइंट लाइब्रेरी का इस्तेमाल किए बिना, सीधे REST एंडपॉइंट को कॉल करने के उदाहरण दिए गए हैं.
ज़्यादा जानकारी वाले कोड के उदाहरणों के लिए, REST कोड के उदाहरणों की GitHub रिपॉज़िटरी देखें.
हर एपीआई तरीके के लिए, अनुरोध और रिस्पॉन्स की मुख्य जानकारी देखने के लिए, सेवा के खास एंडपॉइंट के लिए रेफ़रंस दस्तावेज़ देखें.
उदाहरण के लिए, GoogleAdsService.Search के रेफ़रंस पेज पर, Search तरीके के लिए अनुरोध और जवाब की मुख्य जानकारी दिखती है.
ज़रूरी शर्तें
यहां दिखाए गए सभी सैंपल, curl कमांड का इस्तेमाल करके, bash shell में कॉपी करके चिपकाने के लिए हैं.
आपके पास एक Google Cloud प्रोजेक्ट भी होना चाहिए. टेस्ट खाते का ऐक्सेस होना भी ठीक है. साथ ही, आपके पास एक Google Ads मैनेजर खाता होना चाहिए, जिसमें कम से कम एक क्लाइंट खाता हो.
एनवायरमेंट वैरिएबल
खाते के क्रेडेंशियल और आईडी डालें, जैसा कि दिखाया गया है. इसके बाद, उन्हें अपने टर्मिनल में कॉपी करके चिपकाएं, ताकि बाद के उदाहरणों में इस्तेमाल किए गए एनवायरमेंट वैरिएबल को कॉन्फ़िगर किया जा सके. अनुमति गाइड में, OAuth 2.0 ऐक्सेस टोकन जनरेट करने के निर्देश दिए गए हैं.
API_VERSION="26"
OAUTH2_ACCESS_TOKEN="OAUTH_ACCESS_TOKEN"
MANAGER_CUSTOMER_ID="MANAGER_CUSTOMER_ID"
CUSTOMER_ID="CUSTOMER_ID"अन्य वैकल्पिक ऑब्जेक्ट आईडी
इनमें से कुछ उदाहरण, पहले से मौजूद बजट या कैंपेन पर काम करते हैं. अगर आपके पास इन उदाहरणों के साथ इस्तेमाल करने के लिए, मौजूदा ऑब्जेक्ट के आईडी हैं, तो उन्हें यहां दिखाए गए तरीके से डालें.
BUDGET_ID=BUDGET_ID
CAMPAIGN_ID=CAMPAIGN_IDअगर ऐसा नहीं है, तो Mutates - Creates examples, एक नया बजट और कैंपेन बनाते हैं.
खोजें
Query Cookbook गाइड में, रिपोर्टिंग के कई सैंपल शामिल हैं. ये सैंपल, Google Ads की कुछ डिफ़ॉल्ट स्क्रीन से जुड़े होते हैं. साथ ही, ये इस गाइड में इस्तेमाल किए गए एनवायरमेंट वैरिएबल के साथ काम करते हैं. हमारा इंटरैक्टिव क्वेरी बिल्डर टूल भी इंटरैक्टिव तरीके से कस्टम क्वेरी बनाने के लिए एक बेहतरीन संसाधन है.
पेज पर नंबर डालने की सुविधा
search वाले तरीके में, पेज पर नंबर डालने की सुविधा का इस्तेमाल किया जाता है. इसमें पेज का साइज़ 10,000 आइटम पर सेट होता है. साथ ही, query के साथ page_token की जानकारी दी जाती है.
curl
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' ", "page_token":"${PAGE_TOKEN}" }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
स्ट्रीमिंग
searchStream तरीका, सभी नतीजों को एक ही रिस्पॉन्स में स्ट्रीम करता है. इसलिए, pageSize फ़ील्ड का इस्तेमाल नहीं किया जा सकता.
curl
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:searchStream" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' " }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
बदलाव
operations कलेक्शन को भरकर, एक JSON अनुरोध के मुख्य हिस्से में कई म्यूटेट ऑपरेशन (create, update या remove) भेजे जा सकते हैं.
बनाता है
इस उदाहरण में, एक ही अनुरोध में कैंपेन के लिए शेयर किए गए दो बजट बनाए गए हैं.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaignBudgets:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } }, { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } } ] }"
अगले उदाहरण में, किसी मौजूदा कैंपेन के बजट के BUDGET_ID का इस्तेमाल किया गया है. पिछले चरण के आउटपुट से कॉपी करके चिपकाया जा सकता है.
BUDGET_ID=BUDGET_IDअन्य संसाधनों का रेफ़रंस देने वाले संसाधन, संसाधन के नाम का इस्तेमाल करके ऐसा करते हैं.
यहां दिए गए उदाहरण में बनाया गया कैंपेन, स्ट्रिंग वैल्यू वाले संसाधन के नाम का इस्तेमाल करके, campaignBudget को रेफ़र करता है.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/${BUDGET_ID}', 'targetSpend': {} } } ] }"
अपडेट
update ऑपरेशन का इस्तेमाल करके, मौजूदा ऑब्जेक्ट के एट्रिब्यूट अपडेट करें. अगले उदाहरण में, किसी मौजूदा कैंपेन का इस्तेमाल किया गया है. पिछले चरण के आउटपुट से कॉपी करके चिपकाया जा सकता है.
CAMPAIGN_ID=CAMPAIGN_IDसभी अपडेट के लिए, updateMask फ़ील्ड ज़रूरी है. यह JSON एट्रिब्यूट की कॉमा लगाकर अलग की गई लिस्ट होती है. इसमें वे एट्रिब्यूट शामिल होने चाहिए जो अनुरोध में मौजूद होने चाहिए और जिन्हें अपडेट के तौर पर लागू किया जाना चाहिए.
updateMask में दिए गए एट्रिब्यूट, अनुरोध के मुख्य हिस्से में मौजूद नहीं होते हैं. इसलिए, उन्हें ऑब्जेक्ट से हटा दिया जाता है. updateMask में शामिल नहीं किए गए एट्रिब्यूट को अनदेखा कर दिया जाता है. हालांकि, ये एट्रिब्यूट अनुरोध के मुख्य हिस्से में मौजूद होते हैं.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'name': 'A changed campaign name #${RANDOM}', }, 'updateMask': 'name' } ], }"
हटाएं
ऑब्जेक्ट को हटाने के लिए, उनके संसाधन के नाम को remove कार्रवाई के तौर पर तय किया जाता है.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'remove': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}' } ], }"
कुछ फ़ाइलों का फ़ॉर्मैट नहीं बदला जा सका
जब एक ही अनुरोध में कई कार्रवाइयां शामिल हों, तो विकल्प के तौर पर partialFailure की जानकारी दें. अगर true है, तो सही कार्रवाइयां पूरी की जाती हैं और अमान्य कार्रवाइयों के लिए गड़बड़ी का मैसेज दिखता है. अगर false है, तो अनुरोध में मौजूद सभी कार्रवाइयां सिर्फ़ तब पूरी होंगी, जब वे सभी मान्य हों.
अगले उदाहरण में, किसी मौजूदा कैंपेन का इस्तेमाल किया गया है. बनाता है उदाहरण के आउटपुट से कॉपी करके चिपकाया जा सकता है.
CAMPAIGN_ID=CAMPAIGN_IDइस अनुरोध में दो कार्रवाइयां शामिल हैं. पहले अनुरोध में, दिए गए कैंपेन की बिडिंग की रणनीति को बदलने की कोशिश की गई है. वहीं, दूसरे अनुरोध में अमान्य आईडी वाले कैंपेन को हटाने की कोशिश की गई है. दूसरे ऑपरेशन की वजह से गड़बड़ी होती है (कैंपेन आईडी अमान्य है) और partialFailure को false पर सेट किया गया है, इसलिए पहला ऑपरेशन भी पूरा नहीं होता और मौजूदा कैंपेन की बिडिंग की रणनीति अपडेट नहीं होती.
curl --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'partialFailure': false, 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'manualCpc': { 'enhancedCpcEnabled': false } }, 'updateMask': 'manual_cpc.enhanced_cpc_enabled' }, { 'remove': 'customers/${CUSTOMER_ID}/campaigns/INVALID_CAMPAIGN_ID' } ] }"
ग्रुप में की गई कार्रवाइयां
googleAds:mutate तरीके से, कई तरह के संसाधनों के साथ कार्रवाइयों के ग्रुप भेजे जा सकते हैं. अलग-अलग तरह के कई ऑपरेशन भेजे जा सकते हैं, ताकि एक ग्रुप के तौर पर किए जाने वाले ऑपरेशन के क्रम को एक साथ जोड़ा जा सके.
अगर कोई भी कार्रवाई नहीं रुकती है, तो कार्रवाइयों का सेट पूरा हो जाता है. अगर कोई एक कार्रवाई रुकती है, तो सभी कार्रवाइयां रुक जाती हैं.
इस उदाहरण में, कैंपेन का बजट, कैंपेन, विज्ञापन ग्रुप, और विज्ञापन को एक साथ बनाने का तरीका बताया गया है. हर अगला ऑपरेशन, पिछले ऑपरेशन पर निर्भर करता है. अगर एक कार्रवाई पूरी नहीं होती है, तो कार्रवाइयों का पूरा ग्रुप पूरा नहीं होता है.
नेगेटिव पूर्णांक (-1, -2, -3) का इस्तेमाल, संसाधन के नामों में प्लेसहोल्डर के तौर पर किया जाता है. साथ ही, इन्हें रनटाइम के दौरान, कार्रवाइयों के क्रम से मिलने वाले नतीजों से डाइनैमिक तौर पर भरा जाता है.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'mutateOperations': [ { 'campaignBudgetOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'name': 'My Campaign Budget #${RANDOM}', 'deliveryMethod': 'STANDARD', 'amountMicros': 500000, 'explicitlyShared': false } } }, { 'campaignOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/-2', 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'targetSpend': {} } } }, { 'adGroupOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/adGroups/-3', 'campaign': 'customers/${CUSTOMER_ID}/campaigns/-2', 'name': 'My ad group #${RANDOM}', 'status': 'PAUSED', 'type': 'SEARCH_STANDARD' } } }, { 'adGroupAdOperation': { 'create': { 'adGroup': 'customers/${CUSTOMER_ID}/adGroups/-3', 'status': 'PAUSED', 'ad': { 'responsiveSearchAd': { 'headlines': [ { 'pinned_field': 'HEADLINE_1', 'text': 'An example headline' }, { 'text': 'Another example headline' }, { 'text': 'Yet another headline' } ], 'descriptions': [ { 'text': 'An example description' }, { 'text': 'Another example description' } ], 'path1': 'all-inclusive', 'path2': 'deals' }, 'finalUrls': ['https://www.example.com'] } } } } ] }"
खाता प्रबंधन
खाते बनाए जा सकते हैं, ऐक्सेस किए जा सकने वाले खातों की सूची बनाई जा सकती है, और बाइनरी ऐसेट अपलोड की जा सकती हैं.
खाते बनाना
createCustomerClient तरीके का इस्तेमाल करके नए खाते बनाएं. ध्यान दें कि यूआरएल में क्लाइंट खाता आईडी के बजाय, मैनेजर खाता आईडी डालना ज़रूरी है. मैनेजर खाते में एक नया क्लाइंट खाता बन जाता है.
curl f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${MANAGER_CUSTOMER_ID}:createCustomerClient" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'customerClient': { 'descriptiveName': 'My Client #${RANDOM}', 'currencyCode': 'USD', 'timeZone': 'America/New_York' } }"
ऐक्सेस किए जा सकने वाले खातों की सूची बनाएं
दिए गए OAuth 2.0 ऐक्सेस टोकन से ऐक्सेस किए जा सकने वाले Google Ads खातों की सूची पाने के लिए, listAccessibleCustomers तरीके के लिए एक आसान GET अनुरोध का इस्तेमाल करें. इस अनुरोध में, मैनेजर या क्लाइंट खाते के आईडी का इस्तेमाल नहीं किया जाना चाहिए.
curl -f --request GET "https://googleads.googleapis.com/v${API_VERSION}/customers:listAccessibleCustomers" \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \
बाइनरी ऐसेट अपलोड करना
assets:mutate तरीके का इस्तेमाल, ऐसेट अपलोड करने और उन्हें मैनेज करने के लिए किया जाता है.
बाइनरी डेटा, जैसे कि इमेज को पैडिंग के साथ स्टैंडर्ड base64 एन्कोडिंग का इस्तेमाल करके, स्ट्रिंग के तौर पर एन्कोड किया जाता है. स्टैंडर्ड या यूआरएल के लिए सुरक्षित base64 एन्कोडिंग को स्वीकार किया जाता है. इसमें पैडिंग हो भी सकती है और नहीं भी.
इस उदाहरण में, सैंपल को छोटा रखने के लिए एक पिक्सल वाले GIF को कोड में बदला गया है. आम तौर पर, data पेलोड का साइज़ बहुत बड़ा होता है.
एक पिक्सल वाली GIF इमेज को कोड में बदलने के लिए, base64 कमांड लाइन यूटिलिटी (GNU कोर यूटिलिटी का हिस्सा) का इस्तेमाल करें.
base64 1pixel.gif
एपीआई अनुरोध में, base64-कोड में बदली गई वैल्यू को data एट्रिब्यूट के तौर पर बताया जाता है.
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/assets:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My image asset #${RANDOM}', 'type': 'IMAGE', 'imageAsset': { 'data': 'R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIA' } } } ] }"