Alan Maskeleri

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.