Google Ads API'de güncellemeler bir alan maskesi kullanılarak yapılır. Alan maskesi listeleri güncellemeyle değiştirmek istediğiniz tüm alanlar ve belirtilen tüm alanlar diğeri, sunucuya gönderilse bile yoksayılır.
FieldMasks yardımcı programı
Alan maskeleri oluşturmak için önerilen yol, yerleşik alan maskemizi kullanmaktır
elektrik, su veya doğalgaz
(FieldMasks
),
Bu, bina yerine değiştirilmiş bir nesneden alan maskeleri oluşturmanıza olanak tanır
sıfırdan başlıyor.
Aşağıda, bir kampanyayı güncellemeyle ilgili bir örnek verilmiştir:
my $campaign = Google::Ads::GoogleAds::V17::Resources::Campaign->new({
resourceName =>
Google::Ads::GoogleAds::V17::Utils::ResourceNames::campaign(
$customer_id, $campaign_id
),
status => PAUSED,
networkSettings =>
Google::Ads::GoogleAds::V17::Resources::NetworkSettings->new({
targetSearchNetwork => "false"
})
});
my $campaign_operation =
Google::Ads::GoogleAds::V17::Services::CampaignService::CampaignOperation->new({
update => $campaign,
updateMask => all_set_fields_of($campaign)
});
Bu örnek ilk olarak kaynak adını ayarlayarak bir Campaign
nesnesi oluşturur
ResourceNames
yardımcı programını kullanarak
güncellendiğini görebilirsiniz.
Örnekte
FieldMasks::all_set_fields_of()
yöntemini kullanarak tüm reklam öğelerini listeleyen bir alan maskesi
alanları ayarlayın. Ardından, döndürülen maskeyi doğrudan güncelleme çağrısına geçirebilirsiniz.
FieldMasks::all_set_fields_of()
, kullanıcıların
FieldMasks::field_mask()
İletilen nesnenizi aynı sınıfın boş bir nesnesiyle karşılaştırır. Bu nedenle
yukarıdaki kodu da kullanabilirsiniz
field_mask(Google::Ads::GoogleAds::V17::Resources::Campaign->new({}), $campaign)
(all_set_fields_of($campaign)
) bulabilirsiniz.
Manuel olarak maske oluşturma
Sıfırdan bir alan maskesi oluşturmak için önce bir
Google::Ads::GoogleAds::Common::FieldMask
daha sonra, tüm alanların adlarıyla doldurulan bir dizi referansını oluşturun.
ve son olarak dizi referansını, alan maskesinin kimliğine
paths
alanı için geçerlidir.
my $field_mask = Google::Ads::GoogleAds::Common::FieldMask->new({
paths => ["status", "name"]
});
Nesne alanlarını ve alt alanlarını güncelleme
Nesne alanlarının alt alanları olabilir (ör.
Üçü olan MaximizeConversions
:
target_cpa_micros
, cpc_bid_ceiling_micros
ve cpc_bid_floor_micros
); veya
hiçbirine sahip olamaz (ManualCpm
gibi).
Tanımlanmış alt alanı olmayan nesne alanları
Perl'deki bir nesne alanı, istemcideki bir protobuf MESSAGE
ile eşdeğerdir
kitaplığını oluşturur. Tanımlanmamış bir nesne alanını güncellerken
alan maskesi oluşturmak için FieldMasks yardımcı programını kullanın.
'ne başvurun.
Tanımlanmış alt alanlara sahip nesne alanları
Açıkça alt alanlarla tanımlanan bir nesne alanını güncellerken
söz konusu mesajdaki alt alanlardan birini ayarlarsanız, her bir alt alana manuel olarak
Yukarıdaki örneğe benzer şekilde, FieldMask
için mutable nesne alt alanları
bir alan maskesi oluşturuyoruz.
Yaygın bir örnek olarak, bir kampanyanın teklif stratejisini herhangi bir
yeni teklif stratejisinin Aşağıdaki örnekte,
bir kampanyayı
MaximizeConversions
teklif stratejisi
teklif stratejisindeki alt alanlardan hiçbirini ayarlamadan.
Bu durumda, all_set_fields_of()
field_mask()
FieldMasks yardımcı programı, amaçlanan hedefe ulaşmaz.
Aşağıdaki örnekte, aşağıdakileri içeren bir alan maskesi oluşturulur:
maximize_conversions
Ancak, Google Ads API bu davranışa izin vermez.
alanları yanlışlıkla temizlemesini engeller ve
FieldMaskError.FIELD_HAS_SUBFIELDS
hatası.
# Creates a campaign with the proper resource name and an empty
# MaximizeConversions field.
my $campaign = Google::Ads::GoogleAds::V17::Resources::Campaign->new({
resourceName =>
Google::Ads::GoogleAds::V17::Utils::ResourceNames::campaign(
$customer_id, $campaign_id
),
maximizeConversions =>
Google::Ads::GoogleAds::V17::Resources::MaximizeConversions->new()
});
# Constructs an operation, using the FieldMasks' all_set_fields_of utility to
# derive the update mask. The field mask will include 'maximize_conversions',
# which will produce a FieldMaskError.FIELD_HAS_SUBFIELDS error.
my $campaign_operation =
Google::Ads::GoogleAds::V17::Services::CampaignService::CampaignOperation->new({
update => $campaign,
updateMask => all_set_fields_of($campaign)
});
# Sends the operation in a mutate request that will result in a
# FieldMaskError.FIELD_HAS_SUBFIELDS error because empty object fields cannot
# be included in a field mask.
my $response = $api_client->CampaignService()->mutate({
customerId => $customer_id,
operations => [$campaign_operation]
});
Aşağıdaki örnekte, bir kampanyanın
Alt alanlarını ayarlamadan MaximizeConversions
teklif stratejisi uygulayabilirsiniz.
# Creates a campaign with the proper resource name.
my $campaign = Google::Ads::GoogleAds::V17::Resources::Campaign->new({
resourceName => Google::Ads::GoogleAds::V17::Utils::ResourceNames::campaign(
$customer_id, $campaign_id
)
});
# Creates a field mask from the existing campaign and adds all of the fields
# on the MaximizeConversions bidding strategy to the field mask. Because these
# fields are included in the field mask but excluded from the campaign object,
# the Google Ads API will set the campaign's bidding strategy to a
# MaximizeConversions object with none of its subfields set.
# Only include 'maximize_conversions.target_cpa_micros' in the field mask
# as it is the only mutable subfield on MaximizeConversions when used as a
# standard bidding strategy.
#
# Learn more about standard and portfolio bidding strategies here:
# https://developers.google.com/google-ads/api/docs/campaigns/bidding/assign-strategies
my $field_mask = all_set_fields_of($campaign);
push @{$field_mask->{paths}}, "maximize_conversions.target_cpa_micros";
# Creates an operation to update the campaign with the specified fields.
my $campaign_operation =
Google::Ads::GoogleAds::V17::Services::CampaignService::CampaignOperation->new({
update => $campaign,
updateMask => $field_mask
});
Alanlar temizleniyor
Alanlar, gösterildiği gibi alan maskesine eklenerek açıkça temizlenebilir
alanı boş ya da tanımlanmamış bir değere ayarlayarak kullanabilirsiniz. Örneğin,
MaximizeConversions
teklif stratejisi kullanan bir kampanyanız olduğunu varsayalım
target_cpa_micros
alanının
0
.
# Creates a campaign with the proper resource name and a MaximizeConversions
# object with target_cpa_micros set to 0.
my $campaign =
Google::Ads::GoogleAds::V17::Resources::Campaign->new({
resourceName => Google::Ads::GoogleAds::V17::Utils::ResourceNames::campaign(
$customer_id, $campaign_id
),
maximizeConversions => Google::Ads::GoogleAds::V17::Resources::MaximizeConversions->new({
targetCpaMicros => 0
})
});
# Constructs an operation, using the FieldMasks' all_set_fields_of utility to
# derive the update mask, which will include 'maximize_conversions.target_cpa_micros'.
my $campaign_operation =
Google::Ads::GoogleAds::V17::Services::CampaignService::CampaignOperation->new({
update => $campaign,
updateMask => all_set_fields_of($campaign)
});
İç içe alt alanları olan alanlar yalnızca tanımlanmış bulunan nesne alanları bölümünde gösterildiği gibi, alt alanlara ekleyin.