مصانع

يوفّر factories واجهة عالية المستوى لإنشاء العمليات والموارد باستخدام مكتبة العميل.

يتم إنشاء طرق المصنع تلقائيًا لجميع الموارد والتعدادات والعمليات وأنواع الخدمات التي توفّرها Google Ads API. تفترض الأمثلة الواردة في هذه الصفحة أنّك قد بدأت مثيل GoogleAdsClient وهدف customer_id:

require 'google/ads/google_ads'

client = Google::Ads::GoogleAds::GoogleAdsClient.new
customer_id = '1234567890'

العمليات

توفّر المكتبة طرقًا مريحة لـ client.operation.create_resource.<resource_type> وclient.operation.update_resource.<resource_type> وclient.operation.remove_resource.<resource_type> لإنشاء عمليات للعمل مع Google Ads API.

ينشئ المثال التالي موردًا لميزانية الحملة:

campaign_budget_operation =
  client.operation.create_resource.campaign_budget do |budget|
    budget.name = "Interplanetary Budget #{(Time.new.to_f * 1000).to_i}"
    budget.delivery_method = :STANDARD
    budget.amount_micros = 500_000
  end

return_budget = client.service.campaign_budget.mutate_campaign_budgets(
  customer_id: customer_id,
  operations: [campaign_budget_operation]
)

يُرجى العِلم أنّ العنصر الذي تم إرجاعه إلى الكتلة (budget) هو نسخة افتراضية جديدة من CampaignBudget يمكنك تغييرها، ويتم عرض عملية الإنشاء المناسبة لـ CampaignBudgetService.

وبالمثل، توفّر المكتبة طرقًا ملائمة لتعديل الموارد:

campaign_service = client.service.campaign

# If you only have a resource name:
update_operation =
  client.operation.update_resource.campaign(campaign_resource_name) do |camp|
    camp.status = :PAUSED
  end

campaign_service.mutate_campaigns(
  customer_id: customer_id,
  operations: [update_operation]
)

# If you have a full resource proto:
update_operation = client.operation.update_resource.campaign(campaign) do |camp|
  camp.name = "A different Cruise #{(Time.new.to_f * 1000).to_i}"
end

campaign_service.mutate_campaigns(
  customer_id: customer_id,
  operations: [update_operation]
)

تعرض هذه الطلبات عملية تعديل صحيحة مع قناع حقل تم ملؤه مسبقًا لتعديل المورد في Google Ads API.

يزيل المثال التالي موردًا باستخدام مسار المورد:

campaign_service = client.service.campaign
remove_operation =
  client.operation.remove_resource.campaign(campaign_resource_name)
campaign_service.mutate_campaigns(
  customer_id: customer_id,
  operations: [remove_operation]
)

إذا كنت تفضّل العمل مع العملية بنفسك، يمكنك الحصول على عملية أولية ثم ملء الحقول يدويًا:

operation = client.operation.campaign

الموارد

توفّر المكتبة client.resource.<resource_type> لإعداد عناصر الموارد:

campaign.network_settings = client.resource.network_settings do |ns|
  ns.target_google_search = true
  ns.target_search_network = true
  ns.target_content_network = false
  ns.target_partner_search_network = false
end

يتم إنشاء مثيل جديد من نوع المورد المطلوب في الكتلة التي تم تمريرها لضبط الحقول.

الخدمات

توفّر المكتبة client.service.<service_name> لاسترداد عناصر عميل الخدمة:

campaign_service = client.service.campaign

عمليات التعداد

استخدِم بنية الرموز لضبط حقول التعداد بشكل ثابت (على سبيل المثال، campaign.status = :PAUSED). لتعداد جميع القيم الصالحة للتعداد، استخدِم client.enum:

client.enum.ad_type.each { |ad_type| p ad_type }
# Output:
# :UNSPECIFIED
# :UNKNOWN
# :TEXT_AD
# :EXPANDED_TEXT_AD
# :EXPANDED_DYNAMIC_SEARCH_AD
# :HOTEL_AD
# :SHOPPING_SMART_AD
# :SHOPPING_PRODUCT_AD
# :VIDEO_AD
# :IMAGE_AD
# :RESPONSIVE_SEARCH_AD
# :LEGACY_RESPONSIVE_DISPLAY_AD
# :APP_AD
# :LEGACY_APP_INSTALL_AD
# :RESPONSIVE_DISPLAY_AD
# :LOCAL_AD
# :HTML5_UPLOAD_AD
# :DYNAMIC_HTML5_AD
# :APP_ENGAGEMENT_AD
# :SHOPPING_COMPARISON_LISTING_AD
# :VIDEO_BUMPER_AD
# :VIDEO_NON_SKIPPABLE_IN_STREAM_AD
# :VIDEO_TRUEVIEW_IN_STREAM_AD
# :VIDEO_RESPONSIVE_AD
# :SMART_CAMPAIGN_AD
# :CALL_AD
# :APP_PRE_REGISTRATION_AD
# :IN_FEED_VIDEO_AD
# :DEMAND_GEN_MULTI_ASSET_AD
# :DEMAND_GEN_CAROUSEL_AD
# :TRAVEL_AD
# :DEMAND_GEN_VIDEO_RESPONSIVE_AD
# :DEMAND_GEN_PRODUCT_AD
# :YOUTUBE_AUDIO_AD

ضبط إصدارات Google Ads API بشكل صريح

يمكنك أيضًا ضبط رقم إصدار رئيسي لواجهة برمجة التطبيقات بشكل صريح في أي طلب من المصنع (على سبيل المثال، v26، تستخدم الإصدارات الثانوية من واجهة برمجة التطبيقات، مثل الإصدار 25.1، طريقة الإصدار الرئيسي v25):

client.resource.v26.[entity]
client.operation.v26.[operation]
client.service.v26.[service]
client.enum.v26.[enum]