इस गाइड में, क्लाइंट लाइब्रेरी का इस्तेमाल किए बिना, सीधे तौर पर REST एंडपॉइंट को कॉल करने के उदाहरण दिए गए हैं.
ज़रूरी शर्तें
यहां दिखाए गए सभी सैंपल को curl कमांड का इस्तेमाल करके, bash शेल में कॉपी करके चिपकाया जा सकता है.
आपके पास डेवलपर टोकन भी होना चाहिए. टेस्ट खाते का ऐक्सेस भी ठीक है. साथ ही, आपके पास कम से कम एक क्लाइंट खाते वाला Google Ads मैनेजर खाता भी होना चाहिए.
एनवायरमेंट वैरिएबल
खाते के क्रेडेंशियल और आईडी, दिखाए गए तरीके से डालें. इसके बाद, टर्मिनल में कॉपी करके चिपकाएं, ताकि बाद के उदाहरणों में इस्तेमाल किए गए एनवायरमेंट वैरिएबल कॉन्फ़िगर किए जा सकें. ऑथराइज़ेशन गाइड में, OAuth 2.0 ऐक्सेस टोकन जनरेट करने के लिए निर्देश दिए गए हैं.
API_VERSION="20"
DEVELOPER_TOKEN="DEVELOPER_TOKEN"
OAUTH2_ACCESS_TOKEN="OAUTH_ACCESS_TOKEN"
MANAGER_CUSTOMER_ID="MANAGER_CUS
TOMER_ID"
CUSTOMER_ID="CUSTOMER_ID"
अन्य वैकल्पिक ऑब्जेक्ट आईडी
यहां दिए गए कुछ उदाहरण, पहले से मौजूद बजट या कैंपेन पर काम करते हैं. अगर आपके पास इन उदाहरणों के साथ इस्तेमाल करने के लिए, मौजूदा ऑब्जेक्ट के आईडी हैं, तो उन्हें दिखाए गए तरीके से डालें.
BUDGET_ID=BUDGET_ID
CAMPAIGN_ID=CAMPAIGN_ID
अगर ऐसा नहीं है, तो दो बदलाव करता है - उदाहरण बनाता है, एक नया बजट और कैंपेन बनाते हैं.
खोजें
क्वेरी कुकबुक गाइड में, रिपोर्टिंग के कई सैंपल शामिल हैं. ये सैंपल, 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 "developer-token: ${DEVELOPER_TOKEN}" \ --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'
curl
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:searchStream" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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 "developer-token: ${DEVELOPER_TOKEN}" \ --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' } } } ] }"