مصانع

توفر 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 بشكلٍ صريح

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

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