উদাহরণ

এই নির্দেশিকাটিতে ক্লায়েন্ট লাইব্রেরি ব্যবহার না করেই সরাসরি REST এন্ডপয়েন্টগুলিতে কল করার উদাহরণ রয়েছে।

পূর্বশর্ত

এখানে দেখানো সমস্ত নমুনা curl কমান্ড ব্যবহার করে একটি bash শেলে কপি-পেস্ট করার জন্য তৈরি।

আপনার একটি ডেভেলপার টোকেনও প্রয়োজন, টেস্ট অ্যাকাউন্ট অ্যাক্সেস ঠিক আছে, এবং কমপক্ষে একটি ক্লায়েন্ট অ্যাকাউন্ট সম্বলিত একটি Google Ads ম্যানেজার অ্যাকাউন্টও প্রয়োজন।

পরিবেশের ভেরিয়েবল

দেখানো হিসাবে অ্যাকাউন্ট শংসাপত্র এবং আইডি লিখুন, এবং তারপর পরবর্তী উদাহরণগুলিতে ব্যবহৃত পরিবেশ ভেরিয়েবলগুলি কনফিগার করতে আপনার টার্মিনালে কপি-পেস্ট করুন। অনুমোদন নির্দেশিকাটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করার জন্য নির্দেশাবলী প্রদান করে।

API_VERSION="22"
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

অন্যথায়, দুটি মিউটেট - ক্রিয়েটস উদাহরণ একটি নতুন বাজেট এবং প্রচারণা তৈরি করে।

কোয়েরি কুকবুক গাইডে অনেক রিপোর্টিং নমুনা রয়েছে যা ডিফল্ট গুগল বিজ্ঞাপন স্ক্রিনের সাথে সামঞ্জস্যপূর্ণ এবং এই গাইডে ব্যবহৃত একই পরিবেশ ভেরিয়েবলের সাথে কাজ করে। আমাদের ইন্টারেক্টিভ কোয়েরি বিল্ডার টুলটি ইন্টারেক্টিভভাবে কাস্টম কোয়েরি তৈরির জন্য একটি দুর্দান্ত সম্পদ।

পৃষ্ঠাঙ্কিত

search পদ্ধতিতে পৃষ্ঠাঙ্কন ব্যবহার করা হয়, যার একটি নির্দিষ্ট পৃষ্ঠার আকার ১০,০০০ আইটেম এবং query সাথে একটি page_token উল্লেখ করা হয়।

কার্ল করা

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

পরিবর্তন করে

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 , অনুরোধের সমস্ত অপারেশন সফল হয় যদি এবং শুধুমাত্র যদি সেগুলি সব বৈধ হয়।

পরবর্তী উদাহরণটি একটি বিদ্যমান প্রচারণা ব্যবহার করে; আপনি Creates উদাহরণ আউটপুট থেকে কপি-পেস্ট করতে পারেন।

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 পদ্ধতি ব্যবহার করে নতুন অ্যাকাউন্ট তৈরি করুন। মনে রাখবেন যে URL-এর জন্য ক্লায়েন্ট অ্যাকাউন্ট আইডির পরিবর্তে একটি ম্যানেজার অ্যাকাউন্ট আইডি প্রয়োজন। ম্যানেজার অ্যাকাউন্টের অধীনে একটি নতুন ক্লায়েন্ট অ্যাকাউন্ট তৈরি করা হয়।

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 বিজ্ঞাপন অ্যাকাউন্টগুলির একটি তালিকা পেতে 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 পদ্ধতিটি Assets আপলোড এবং পরিচালনার জন্য ব্যবহৃত হয়। বাইনারি ডেটা, যেমন একটি ছবি, প্যাডিং সহ স্ট্যান্ডার্ড base64 এনকোডিং ব্যবহার করে একটি স্ট্রিং হিসাবে এনকোড করা হয়। প্যাডিং সহ বা ছাড়াই স্ট্যান্ডার্ড বা URL-নিরাপদ base64 এনকোডিং গ্রহণযোগ্য।

এই উদাহরণে নমুনাটি সংক্ষিপ্ত রাখার জন্য ১-পিক্সেলের GIF এনকোড করা হয়েছে। বাস্তবে, data পেলোড অনেক বড়।

১-পিক্সেলের GIF ইমেজ এনকোড করতে base64 কমান্ড লাইন ইউটিলিটি ( GNU কোর ইউটিলিটির অংশ) ব্যবহার করুন।

base64 1pixel.gif

একটি API অনুরোধে 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'
      }
    }
  }
]
}"
,

এই নির্দেশিকাটিতে ক্লায়েন্ট লাইব্রেরি ব্যবহার না করেই সরাসরি REST এন্ডপয়েন্টগুলিতে কল করার উদাহরণ রয়েছে।

পূর্বশর্ত

এখানে দেখানো সমস্ত নমুনা curl কমান্ড ব্যবহার করে একটি bash শেলে কপি-পেস্ট করার জন্য তৈরি।

আপনার একটি ডেভেলপার টোকেনও প্রয়োজন, টেস্ট অ্যাকাউন্ট অ্যাক্সেস ঠিক আছে, এবং কমপক্ষে একটি ক্লায়েন্ট অ্যাকাউন্ট সম্বলিত একটি Google Ads ম্যানেজার অ্যাকাউন্টও প্রয়োজন।

পরিবেশের ভেরিয়েবল

দেখানো হিসাবে অ্যাকাউন্ট শংসাপত্র এবং আইডি লিখুন, এবং তারপর পরবর্তী উদাহরণগুলিতে ব্যবহৃত পরিবেশ ভেরিয়েবলগুলি কনফিগার করতে আপনার টার্মিনালে কপি-পেস্ট করুন। অনুমোদন নির্দেশিকাটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করার জন্য নির্দেশাবলী প্রদান করে।

API_VERSION="22"
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

অন্যথায়, দুটি মিউটেট - ক্রিয়েটস উদাহরণ একটি নতুন বাজেট এবং প্রচারণা তৈরি করে।

কোয়েরি কুকবুক গাইডে অনেক রিপোর্টিং নমুনা রয়েছে যা ডিফল্ট গুগল বিজ্ঞাপন স্ক্রিনের সাথে সামঞ্জস্যপূর্ণ এবং এই গাইডে ব্যবহৃত একই পরিবেশ ভেরিয়েবলের সাথে কাজ করে। আমাদের ইন্টারেক্টিভ কোয়েরি বিল্ডার টুলটি ইন্টারেক্টিভভাবে কাস্টম কোয়েরি তৈরির জন্য একটি দুর্দান্ত সম্পদ।

পৃষ্ঠাঙ্কিত

search পদ্ধতিতে পৃষ্ঠাঙ্কন ব্যবহার করা হয়, যার একটি নির্দিষ্ট পৃষ্ঠার আকার ১০,০০০ আইটেম এবং query সাথে একটি page_token উল্লেখ করা হয়।

কার্ল করা

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

পরিবর্তন করে

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 , অনুরোধের সমস্ত অপারেশন সফল হয় যদি এবং শুধুমাত্র যদি সেগুলি সব বৈধ হয়।

পরবর্তী উদাহরণটি একটি বিদ্যমান প্রচারণা ব্যবহার করে; আপনি Creates উদাহরণ আউটপুট থেকে কপি-পেস্ট করতে পারেন।

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 পদ্ধতি ব্যবহার করে নতুন অ্যাকাউন্ট তৈরি করুন। মনে রাখবেন যে URL-এর জন্য ক্লায়েন্ট অ্যাকাউন্ট আইডির পরিবর্তে একটি ম্যানেজার অ্যাকাউন্ট আইডি প্রয়োজন। ম্যানেজার অ্যাকাউন্টের অধীনে একটি নতুন ক্লায়েন্ট অ্যাকাউন্ট তৈরি করা হয়।

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 বিজ্ঞাপন অ্যাকাউন্টগুলির একটি তালিকা পেতে 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 পদ্ধতিটি Assets আপলোড এবং পরিচালনার জন্য ব্যবহৃত হয়। বাইনারি ডেটা, যেমন একটি ছবি, প্যাডিং সহ স্ট্যান্ডার্ড base64 এনকোডিং ব্যবহার করে একটি স্ট্রিং হিসাবে এনকোড করা হয়। প্যাডিং সহ বা ছাড়াই স্ট্যান্ডার্ড বা URL-নিরাপদ base64 এনকোডিং গ্রহণযোগ্য।

এই উদাহরণে নমুনাটি সংক্ষিপ্ত রাখার জন্য ১-পিক্সেলের GIF এনকোড করা হয়েছে। বাস্তবে, data পেলোড অনেক বড়।

১-পিক্সেলের GIF ইমেজ এনকোড করতে base64 কমান্ড লাইন ইউটিলিটি ( GNU কোর ইউটিলিটির অংশ) ব্যবহার করুন।

base64 1pixel.gif

একটি API অনুরোধে 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'
      }
    }
  }
]
}"
,

এই নির্দেশিকাটিতে ক্লায়েন্ট লাইব্রেরি ব্যবহার না করেই সরাসরি REST এন্ডপয়েন্টগুলিতে কল করার উদাহরণ রয়েছে।

পূর্বশর্ত

এখানে দেখানো সমস্ত নমুনা curl কমান্ড ব্যবহার করে একটি bash শেলে কপি-পেস্ট করার জন্য তৈরি।

আপনার একটি ডেভেলপার টোকেনও প্রয়োজন, টেস্ট অ্যাকাউন্ট অ্যাক্সেস ঠিক আছে, এবং কমপক্ষে একটি ক্লায়েন্ট অ্যাকাউন্ট সম্বলিত একটি Google Ads ম্যানেজার অ্যাকাউন্টও প্রয়োজন।

পরিবেশের ভেরিয়েবল

দেখানো হিসাবে অ্যাকাউন্ট শংসাপত্র এবং আইডি লিখুন, এবং তারপর পরবর্তী উদাহরণগুলিতে ব্যবহৃত পরিবেশ ভেরিয়েবলগুলি কনফিগার করতে আপনার টার্মিনালে কপি-পেস্ট করুন। অনুমোদন নির্দেশিকাটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করার জন্য নির্দেশাবলী প্রদান করে।

API_VERSION="22"
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

অন্যথায়, দুটি মিউটেট - ক্রিয়েটস উদাহরণ একটি নতুন বাজেট এবং প্রচারণা তৈরি করে।

কোয়েরি কুকবুক গাইডে অনেক রিপোর্টিং নমুনা রয়েছে যা ডিফল্ট গুগল বিজ্ঞাপন স্ক্রিনের সাথে সামঞ্জস্যপূর্ণ এবং এই গাইডে ব্যবহৃত একই পরিবেশ ভেরিয়েবলের সাথে কাজ করে। আমাদের ইন্টারেক্টিভ কোয়েরি বিল্ডার টুলটি ইন্টারেক্টিভভাবে কাস্টম কোয়েরি তৈরির জন্য একটি দুর্দান্ত সম্পদ।

পৃষ্ঠাঙ্কিত

search পদ্ধতিতে পৃষ্ঠাঙ্কন ব্যবহার করা হয়, যার একটি নির্দিষ্ট পৃষ্ঠার আকার ১০,০০০ আইটেম এবং query সাথে একটি page_token উল্লেখ করা হয়।

কার্ল করা

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

পরিবর্তন করে

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 , অনুরোধের সমস্ত অপারেশন সফল হয় যদি এবং শুধুমাত্র যদি সেগুলি সব বৈধ হয়।

পরবর্তী উদাহরণটি একটি বিদ্যমান প্রচারণা ব্যবহার করে; আপনি Creates উদাহরণ আউটপুট থেকে কপি-পেস্ট করতে পারেন।

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 পদ্ধতি ব্যবহার করে নতুন অ্যাকাউন্ট তৈরি করুন। মনে রাখবেন যে URL-এর জন্য ক্লায়েন্ট অ্যাকাউন্ট আইডির পরিবর্তে একটি ম্যানেজার অ্যাকাউন্ট আইডি প্রয়োজন। ম্যানেজার অ্যাকাউন্টের অধীনে একটি নতুন ক্লায়েন্ট অ্যাকাউন্ট তৈরি করা হয়।

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 বিজ্ঞাপন অ্যাকাউন্টগুলির একটি তালিকা পেতে 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 পদ্ধতিটি Assets আপলোড এবং পরিচালনার জন্য ব্যবহৃত হয়। বাইনারি ডেটা, যেমন একটি ছবি, প্যাডিং সহ স্ট্যান্ডার্ড base64 এনকোডিং ব্যবহার করে একটি স্ট্রিং হিসাবে এনকোড করা হয়। প্যাডিং সহ বা ছাড়াই স্ট্যান্ডার্ড বা URL-নিরাপদ base64 এনকোডিং গ্রহণযোগ্য।

এই উদাহরণে নমুনাটি সংক্ষিপ্ত রাখার জন্য ১-পিক্সেলের GIF এনকোড করা হয়েছে। বাস্তবে, data পেলোড অনেক বড়।

১-পিক্সেলের GIF ইমেজ এনকোড করতে base64 কমান্ড লাইন ইউটিলিটি ( GNU কোর ইউটিলিটির অংশ) ব্যবহার করুন।

base64 1pixel.gif

একটি API অনুরোধে 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'
      }
    }
  }
]
}"
,

এই নির্দেশিকাটিতে ক্লায়েন্ট লাইব্রেরি ব্যবহার না করেই সরাসরি REST এন্ডপয়েন্টগুলিতে কল করার উদাহরণ রয়েছে।

পূর্বশর্ত

এখানে দেখানো সমস্ত নমুনা curl কমান্ড ব্যবহার করে একটি bash শেলে কপি-পেস্ট করার জন্য তৈরি।

আপনার একটি ডেভেলপার টোকেনও প্রয়োজন, টেস্ট অ্যাকাউন্ট অ্যাক্সেস ঠিক আছে, এবং কমপক্ষে একটি ক্লায়েন্ট অ্যাকাউন্ট সম্বলিত একটি Google Ads ম্যানেজার অ্যাকাউন্টও প্রয়োজন।

পরিবেশের ভেরিয়েবল

দেখানো হিসাবে অ্যাকাউন্ট শংসাপত্র এবং আইডি লিখুন, এবং তারপর পরবর্তী উদাহরণগুলিতে ব্যবহৃত পরিবেশ ভেরিয়েবলগুলি কনফিগার করতে আপনার টার্মিনালে কপি-পেস্ট করুন। অনুমোদন নির্দেশিকাটি OAuth 2.0 অ্যাক্সেস টোকেন তৈরি করার জন্য নির্দেশাবলী প্রদান করে।

API_VERSION="22"
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

অন্যথায়, দুটি মিউটেট - ক্রিয়েটস উদাহরণ একটি নতুন বাজেট এবং প্রচারণা তৈরি করে।

কোয়েরি কুকবুক গাইডে অনেক রিপোর্টিং নমুনা রয়েছে যা ডিফল্ট গুগল বিজ্ঞাপন স্ক্রিনের সাথে সামঞ্জস্যপূর্ণ এবং এই গাইডে ব্যবহৃত একই পরিবেশ ভেরিয়েবলের সাথে কাজ করে। আমাদের ইন্টারেক্টিভ কোয়েরি বিল্ডার টুলটি ইন্টারেক্টিভভাবে কাস্টম কোয়েরি তৈরির জন্য একটি দুর্দান্ত সম্পদ।

পৃষ্ঠাঙ্কিত

search পদ্ধতিতে পৃষ্ঠাঙ্কন ব্যবহার করা হয়, যার একটি নির্দিষ্ট পৃষ্ঠার আকার ১০,০০০ আইটেম এবং query সাথে একটি page_token উল্লেখ করা হয়।

কার্ল করা

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

পরিবর্তন করে

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 , অনুরোধের সমস্ত অপারেশন সফল হয় যদি এবং শুধুমাত্র যদি সেগুলি সব বৈধ হয়।

পরবর্তী উদাহরণটি একটি বিদ্যমান প্রচারণা ব্যবহার করে; আপনি Creates উদাহরণ আউটপুট থেকে কপি-পেস্ট করতে পারেন।

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 পদ্ধতি ব্যবহার করে নতুন অ্যাকাউন্ট তৈরি করুন। মনে রাখবেন যে URL-এর জন্য ক্লায়েন্ট অ্যাকাউন্ট আইডির পরিবর্তে একটি ম্যানেজার অ্যাকাউন্ট আইডি প্রয়োজন। ম্যানেজার অ্যাকাউন্টের অধীনে একটি নতুন ক্লায়েন্ট অ্যাকাউন্ট তৈরি করা হয়।

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 বিজ্ঞাপন অ্যাকাউন্টগুলির একটি তালিকা পেতে 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 পদ্ধতিটি Assets আপলোড এবং পরিচালনার জন্য ব্যবহৃত হয়। বাইনারি ডেটা, যেমন একটি ছবি, প্যাডিং সহ স্ট্যান্ডার্ড base64 এনকোডিং ব্যবহার করে একটি স্ট্রিং হিসাবে এনকোড করা হয়। প্যাডিং সহ বা ছাড়াই স্ট্যান্ডার্ড বা URL-নিরাপদ base64 এনকোডিং গ্রহণযোগ্য।

এই উদাহরণে নমুনাটি সংক্ষিপ্ত রাখার জন্য ১-পিক্সেলের GIF এনকোড করা হয়েছে। বাস্তবে, data পেলোড অনেক বড়।

১-পিক্সেলের GIF ইমেজ এনকোড করতে base64 কমান্ড লাইন ইউটিলিটি ( GNU কোর ইউটিলিটির অংশ) ব্যবহার করুন।

base64 1pixel.gif

একটি API অনুরোধে 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'
      }
    }
  }
]
}"