उदाहरण

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

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

नीचे दिए गए सभी सैंपल, कॉपी करके बैश में चिपकाने के लिए हैं शेल curl कमांड इस्तेमाल करके).

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

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

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

API_VERSION="17"
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}"
}'

जीएक्यूएल

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'
"
}'

जीएक्यूएल

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'

बदलाव

एक से ज़्यादा बदलाव करने वाली कार्रवाइयों (create, update या remove) को operations कलेक्शन में जानकारी अपने-आप भरते हुए, सिंगल JSON अनुरोध का मुख्य हिस्सा.

बनाएं

यह उदाहरण एक ही अनुरोध में शेयर किए गए दो कैंपेन के बजट बनाता है.

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

नीचे दिए गए अनुरोध में दो कार्रवाइयां हैं. हम बिडिंग की रणनीति का इस्तेमाल किया जा सकता है और अगली रणनीति, अमान्य 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'
}
}"

ऐक्सेस किए जा सकने वाले खातों की लिस्टिंग

सूची पाने के लिए, listAccessibleCustomers तरीके से GET का आसान अनुरोध करें ऐसे Google Ads खातों की संख्या जिनको दिए गए OAuth 2.0 ऐक्सेस टोकन से ऐक्सेस किया जा सकता है. कोई मैनेजर नहीं इस अनुरोध में, अपने क्लाइंट खाते के आईडी का इस्तेमाल करें.

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 पेलोड काफ़ी ज़्यादा हैं.

base64 कमांड लाइन उपयोगिता (इसका हिस्सा है) का इस्तेमाल करें GNU की कोर सुविधाएं) एक पिक्सल की GIF इमेज को कोड में बदलने के लिए.

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'
      }
    }
  }
]
}"