מפעלים

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

טיפוסים בני מנייה (enum)

כדי להגדיר שדות enum באופן סטטי, משתמשים בתחביר של סמלים (לדוגמה, campaign.status = :PAUSED). כדי למנות את כל הערכים התקפים של enum, משתמשים במפעל 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

אפשר גם להגדיר באופן מפורש גרסה ראשית של API בכל קריאה לפונקציית factory (לדוגמה, v25; גרסאות משניות של API כמו v25.1 משתמשות בשיטה של גרסה ראשית v25):

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