उदाहरण

इस गाइड में, क्लाइंट लाइब्रेरी का इस्तेमाल किए बिना, सीधे तौर पर REST एंडपॉइंट को कॉल करने के उदाहरण दिए गए हैं.

ज़रूरी शर्तें

नीचे दिए गए सभी सैंपल को curl कमांड का इस्तेमाल करके, bash shell में कॉपी करके चिपकाया जाना चाहिए.

आपके पास डेवलपर टोकन भी होना चाहिए. टेस्ट खाते का ऐक्सेस भी ठीक है. साथ ही, आपके पास कम से कम एक क्लाइंट खाते वाला Google Ads मैनेजर खाता भी होना चाहिए.

एनवायरमेंट वैरिएबल

खाते के क्रेडेंशियल और आईडी यहां डालें. इसके बाद, अगले उदाहरणों में इस्तेमाल किए गए एनवायरमेंट वैरिएबल को कॉन्फ़िगर करने के लिए, उन्हें अपने टर्मिनल में कॉपी करके चिपकाएं. ऑथराइज़ेशन गाइड में, OAuth 2.0 ऐक्सेस टोकन जनरेट करने के लिए निर्देश दिए गए हैं.

API_VERSION="19"
DEVELOPER_TOKEN="DEVELOPER_TOKEN"
OAUTH2_ACCESS_TOKEN="OAUTH_ACCESS_TOKEN"
MANAGER_CUSTOMER_ID="MANAGER_CUSTOMER_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'

स्ट्रीमिंग

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 "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 पेलोड का साइज़ काफ़ी बड़ा होता है.

1-पिक्सल वाली 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'
      }
    }
  }
]
}"