Умные кампании зависят от ресурса SmartCampaignSetting
, который содержит дополнительные параметры конфигурации, недоступные в основном ресурсе Campaign
.
Настройка умной кампании не может существовать без привязки к кампании, и это одна из причин, почему лучше всего создавать два объекта в одном запросе на изменение.
Создать кампанию
Поскольку умная кампания в основном управляется автоматически с помощью рекламной технологии Google, вам не нужно задавать в ней много полей.
Основные требования к умным кампаниям:
- У него должен быть собственный
CampaignBudget
. - Для параметра
advertising_channel_type
должно быть установлено значениеAdvertisingChannelTypeEnum.SMART
. - Для
advertising_channel_sub_type
должно быть установлено значениеAdvertisingChannelTypeSubEnum.SMART_CAMPAIGN
.
Обратите внимание, что мы установили значение имени ресурса этой кампании, используя временное имя ресурса . Это позволяет другим объектам в запросе на изменение ссылаться на кампанию до того, как она появится в серверной части.
private MutateOperation createSmartCampaignOperation(long customerId) { MutateOperation.Builder builder = MutateOperation.newBuilder(); builder .getCampaignOperationBuilder() .getCreateBuilder() .setName("Smart campaign " + CodeSampleHelper.getShortPrintableDateTime()) .setStatus(CampaignStatus.PAUSED) .setAdvertisingChannelType(AdvertisingChannelType.SMART) .setAdvertisingChannelSubType(AdvertisingChannelSubType.SMART_CAMPAIGN) // Assigns the resource name with a temporary ID. .setResourceName(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID)) .setCampaignBudget(ResourceNames.campaignBudget(customerId, BUDGET_TEMPORARY_ID)); return builder.build(); }
/// <summary> /// Creates a MutateOperation that creates a new Smart campaign. /// A temporary ID will be assigned to this campaign so that it can be referenced by other /// objects being created in the same Mutate request. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <returns>A MutateOperation that creates a campaign.</returns> private MutateOperation CreateSmartCampaignOperation(long customerId) { return new MutateOperation { CampaignOperation = new CampaignOperation { Create = new Campaign { Name = $"Smart campaign #{ExampleUtilities.GetRandomString()}", // Set the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. Status = CampaignStatus.Paused, // AdvertisingChannelType must be SMART. AdvertisingChannelType = AdvertisingChannelType.Smart, // AdvertisingChannelSubType must be SMART_CAMPAIGN. AdvertisingChannelSubType = AdvertisingChannelSubType.SmartCampaign, // Assign the resource name with a temporary ID. ResourceName = ResourceNames.Campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Set the budget using the given budget resource name. CampaignBudget = ResourceNames.CampaignBudget(customerId, BUDGET_TEMPORARY_ID) } } }; }
private static function createSmartCampaignOperation(int $customerId): MutateOperation { // Creates the campaign object. $campaign = new Campaign([ 'name' => "Smart campaign #" . Helper::getPrintableDatetime(), // Sets the campaign status as PAUSED. The campaign is the only entity in the mutate // request that should have its' status set. 'status' => CampaignStatus::PAUSED, // The advertising channel type is required to be SMART. 'advertising_channel_type' => AdvertisingChannelType::SMART, // The advertising channel sub type is required to be SMART_CAMPAIGN. 'advertising_channel_sub_type' => AdvertisingChannelSubType::SMART_CAMPAIGN, // Assigns the resource name with a temporary ID. 'resource_name' => ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID), // Sets the budget using the given budget resource name. 'campaign_budget' => ResourceNames::forCampaignBudget($customerId, self::BUDGET_TEMPORARY_ID) ]); // Creates the MutateOperation that creates the campaign. return new MutateOperation([ 'campaign_operation' => new CampaignOperation(['create' => $campaign]) ]); }
def create_smart_campaign_operation(client, customer_id): """Creates a MutateOperation that creates a new Smart campaign. A temporary ID will be assigned to this campaign so that it can be referenced by other objects being created in the same Mutate request. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a MutateOperation that creates a campaign. """ mutate_operation = client.get_type("MutateOperation") campaign = mutate_operation.campaign_operation.create campaign.name = f"Smart campaign #{uuid4()}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. campaign.status = client.enums.CampaignStatusEnum.PAUSED # Campaign.AdvertisingChannelType is required to be SMART. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SMART ) # Campaign.AdvertisingChannelSubType is required to be SMART_CAMPAIGN. campaign.advertising_channel_sub_type = ( client.enums.AdvertisingChannelSubTypeEnum.SMART_CAMPAIGN ) # Assign the resource name with a temporary ID. campaign_service = client.get_service("CampaignService") campaign.resource_name = campaign_service.campaign_path( customer_id, _SMART_CAMPAIGN_TEMPORARY_ID ) # Set the budget using the given budget resource name. campaign.campaign_budget = campaign_service.campaign_budget_path( customer_id, _BUDGET_TEMPORARY_ID ) return mutate_operation
# Creates a mutate_operation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can # be referenced by other objects being created in the same mutate request. def create_smart_campaign_operation( client, customer_id) mutate_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.name = "Smart campaign ##{(Time.new.to_f * 1000).to_i}" # Sets the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. c.status = :PAUSED # campaign.advertising_channel_type is required to be SMART. c.advertising_channel_type = :SMART # campaign.advertising_channel_sub_type is required to be SMART_CAMPAIGN. c.advertising_channel_sub_type = :SMART_CAMPAIGN # Assigns the resource name with a temporary ID. c.resource_name = client.path.campaign(customer_id, SMART_CAMPAIGN_TEMPORARY_ID) c.campaign_budget = client.path.campaign_budget(customer_id, BUDGET_TEMPORARY_ID) end end mutate_operation end
# Creates a MutateOperation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can be referenced # by other objects being created in the same Mutate request. sub _create_smart_campaign_operation { my ($customer_id) = @_; return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ campaignOperation => Google::Ads::GoogleAds::V19::Services::CampaignService::CampaignOperation ->new({ create => Google::Ads::GoogleAds::V19::Resources::Campaign->new({ name => "Smart campaign #" . uniqid(), # Set the campaign status as PAUSED. The campaign is the only # entity in the mutate request that should have its status set. status => PAUSED, # AdvertisingChannelType must be SMART. advertisingChannelType => SMART, # AdvertisingChannelSubType must be SMART_CAMPAIGN. advertisingChannelSubType => Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelSubTypeEnum::SMART_CAMPAIGN, # Assign the resource name with a temporary ID. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Set the budget using the given budget resource name. campaignBudget => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign_budget( $customer_id, BUDGET_TEMPORARY_ID )})})}); }
Создайте настройку умной кампании
Ресурс SmartCampaignSetting
используется только для настройки умных кампаний. Этот ресурс нельзя создать, если уже не существует умная кампания, на которую он может ссылаться. По этой причине настройки умной кампании уникальны; вы можете думать о них как о расширении основного ресурса Campaign
.
Поскольку настройка умной кампании настолько тесно связана с кампанией, ее нельзя создать с помощью операции create
. Вместо этого его необходимо создать в операции update
.
В отличие от таких ресурсов, как объекты AdGroup
, у которых есть поле campaign
, определяющее, к какой кампании они принадлежат, в настройках умной кампании имена ресурсов должны обновляться напрямую с использованием того же идентификатора, что и их кампания. Создание новой настройки умной кампании аналогично использованию отдельного ресурса для обновления существующей кампании.
Основные требования к настройкам умной кампании:
- Должна существовать существующая
Campaign
, на которую можно ссылаться. - Связь с
Campaign
определяется в егоresource_name
, а не в полеcampaign
. - Вы должны установить либо
business_profile_location
, либоfinal_url
иbusiness_name
вместе. - К операции
update
необходимо добавитьupdate_mask
, даже если вы используете ее для создания новой настройки умной кампании. - Все умные кампании должны иметь целевую страницу, которую можно настроить с помощью
final_url
или включить автоматическую целевую страницу , которая создает целевую страницу для вашей кампании с использованием информации из данногоbusiness_profile_location
.
private MutateOperation createSmartCampaignSettingOperation( long customerId, String businessProfileLocation, String businessName) { MutateOperation.Builder builder = MutateOperation.newBuilder(); SmartCampaignSetting.Builder settingBuilder = builder .getSmartCampaignSettingOperationBuilder() .getUpdateBuilder() // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. .setResourceName( ResourceNames.smartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID)); // Configures the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. settingBuilder .setFinalUrl(LANDING_PAGE_URL) .setAdvertisingLanguageCode(LANGUAGE_CODE) .getPhoneNumberBuilder() .setCountryCode(COUNTRY_CODE) .setPhoneNumber(PHONE_NUMBER); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if (businessProfileLocation != null) { settingBuilder.setBusinessProfileLocation(businessProfileLocation); } else { settingBuilder.setBusinessName(businessName); } builder .getSmartCampaignSettingOperationBuilder() .setUpdateMask(FieldMasks.allSetFieldsOf(settingBuilder.build())); return builder.build(); }
/// <summary> /// Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings /// are unique in that they only support UPDATE operations, which are used to update and /// create them. Below we will use a temporary ID in the resource name to associate it with /// the campaign created in the previous step. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <param name="businessProfileLocation">The identifier of a Business Profile location.</param> /// <param name="businessName">The name of a Business Profile business.</param> /// <returns>A MutateOperation that creates a SmartCampaignSetting.</returns> private MutateOperation CreateSmartCampaignSettingOperation(long customerId, string businessProfileLocation, string businessName) { SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting { // Set a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. ResourceName = ResourceNames.SmartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Below we configure the SmartCampaignSetting using many of the same details used // to generate a budget suggestion. PhoneNumber = new SmartCampaignSetting.Types.PhoneNumber { CountryCode = COUNTRY_CODE, PhoneNumber_ = PHONE_NUMBER }, FinalUrl = LANDING_PAGE_URL, AdvertisingLanguageCode = LANGUAGE_CODE }; // Either a business profile location or a business name must be added to the // SmartCampaignSetting. if (!string.IsNullOrEmpty(businessProfileLocation)) { // Transform Google Business Location ID to a compatible format before // passing it onto the API. smartCampaignSetting.BusinessProfileLocation = businessProfileLocation; } else { smartCampaignSetting.BusinessName = businessName; } return new MutateOperation { SmartCampaignSettingOperation = new SmartCampaignSettingOperation { Update = smartCampaignSetting, // Set the update mask on the operation. This is required since the smart // campaign setting is created in an UPDATE operation. Here the update mask // will be a list of all the fields that were set on the SmartCampaignSetting. UpdateMask = FieldMasks.AllSetFieldsOf(smartCampaignSetting) } }; }
private static function createSmartCampaignSettingOperation( int $customerId, ?string $businessProfileLocationResourceName, ?string $businessName ): MutateOperation { // Creates the smart campaign setting object. $smartCampaignSetting = new SmartCampaignSetting([ // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. 'resource_name' => ResourceNames::forSmartCampaignSetting( $customerId, self::SMART_CAMPAIGN_TEMPORARY_ID ), // Below we configure the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. 'phone_number' => new PhoneNumber([ 'country_code' => self::COUNTRY_CODE, 'phone_number' => self::PHONE_NUMBER ]), 'final_url' => self::LANDING_PAGE_URL, 'advertising_language_code' => self::LANGUAGE_CODE, ]); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if ($businessProfileLocationResourceName) { $smartCampaignSetting->setBusinessProfileLocation($businessProfileLocationResourceName); } else { $smartCampaignSetting->setBusinessName($businessName); } // Creates the MutateOperation that creates the smart campaign setting with an update. return new MutateOperation([ 'smart_campaign_setting_operation' => new SmartCampaignSettingOperation([ 'update' => $smartCampaignSetting, // Sets the update mask on the operation. This is required since the smart campaign // setting is created in an UPDATE operation. Here the update mask will be a list // of all the fields that were set on the SmartCampaignSetting. 'update_mask' => FieldMasks::allSetFieldsOf($smartCampaignSetting) ]) ]); }
def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name ): """Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings are unique in that they only support UPDATE operations, which are used to update and create them. Below we will use a temporary ID in the resource name to associate it with the campaign created in the previous step. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. business_profile_location: the resource name of a Business Profile location. business_name: the name of a Business Profile. Returns: a MutateOperation that creates a SmartCampaignSetting. """ mutate_operation = client.get_type("MutateOperation") smart_campaign_setting = ( mutate_operation.smart_campaign_setting_operation.update ) # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. smart_campaign_setting.resource_name = client.get_service( "SmartCampaignSettingService" ).smart_campaign_setting_path(customer_id, _SMART_CAMPAIGN_TEMPORARY_ID) # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. smart_campaign_setting.phone_number.country_code = _COUNTRY_CODE smart_campaign_setting.phone_number.phone_number = _PHONE_NUMBER smart_campaign_setting.final_url = _LANDING_PAGE_URL smart_campaign_setting.advertising_language_code = _LANGUAGE_CODE # Set either of the business_profile_location or business_name, depending on # whichever is provided. if business_profile_location: smart_campaign_setting.business_profile_location = ( business_profile_location ) else: smart_campaign_setting.business_name = business_name # Set the update mask on the operation. This is required since the smart # campaign setting is created in an UPDATE operation. Here the update # mask will be a list of all the fields that were set on the # SmartCampaignSetting. client.copy_from( mutate_operation.smart_campaign_setting_operation.update_mask, protobuf_helpers.field_mask(None, smart_campaign_setting._pb), ) return mutate_operation
# Creates a mutate_operation to create a new smart_campaign_setting. # smart_campaign_settings are unique in that they only support UPDATE # operations, which are used to update and create them. Below we will # use a temporary ID in the resource name to associate it with the # campaign created in the previous step. def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name) mutate_operation = client.operation.mutate do |m| m.smart_campaign_setting_operation = client.operation.update_resource.smart_campaign_setting( # Sets a temporary ID in the campaign setting's resource name to # associate it with the campaign created in the previous step. client.path.smart_campaign_setting( customer_id, SMART_CAMPAIGN_TEMPORARY_ID) ) do |scs| # Below we configure the smart_campaign_setting using many of the same # details used to generate a budget suggestion. scs.phone_number = client.resource.phone_number do |p| p.country_code = COUNTRY_CODE p.phone_number = PHONE_NUMBER end scs.final_url = LANDING_PAGE_URL scs.advertising_language_code = LANGUAGE_CODE # It's required that either a business location ID or a business name is # added to the smart_campaign_setting. if business_profile_location scs.business_profile_location = business_profile_location else scs.business_name = business_name end end end mutate_operation end
# Creates a MutateOperation to create a new SmartCampaignSetting. # SmartCampaignSettings are unique in that they only support UPDATE operations, # which are used to update and create them. Below we will use a temporary ID in # the resource name to associate it with the campaign created in the previous step. sub _create_smart_campaign_setting_operation { my ($customer_id, $business_profile_location, $business_name) = @_; my $smart_campaign_setting = Google::Ads::GoogleAds::V19::Resources::SmartCampaignSetting->new({ # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::smart_campaign_setting( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. phoneNumber => Google::Ads::GoogleAds::V19::Resources::PhoneNumber->new({ countryCode => COUNTRY_CODE, phoneNumber => PHONE_NUMBER } ), finalUrl => LANDING_PAGE_URL, advertisingLanguageCode => LANGUAGE_CODE }); # It's required that either a business profile location or a business name is # added to the SmartCampaignSetting. if (defined $business_profile_location) { $smart_campaign_setting->{businessProfileLocation} = $business_profile_location; } else { $smart_campaign_setting->{businessName} = $business_name; } return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ smartCampaignSettingOperation => Google::Ads::GoogleAds::V19::Services::SmartCampaignSettingService::SmartCampaignSettingOperation ->new({ update => $smart_campaign_setting, # Set the update mask on the operation. This is required since the # smart campaign setting is created in an UPDATE operation. Here the # update mask will be a list of all the fields that were set on the # SmartCampaignSetting. updateMask => all_set_fields_of($smart_campaign_setting)})}); }
Целевые страницы
Ваша умная кампания должна иметь целевую страницу, на которую будут направляться зрители. Вы можете либо предоставить final_url
, чтобы использовать существующий веб-сайт, либо создать целевую страницу, выбрав автоматические целевые страницы. На новой целевой странице используется информация из вашего бизнес-профиля.
Чтобы создать целевую страницу для вашей кампании, вы должны указать идентификатор business_profile_location
и установить в поле ad_optimized_business_profile_setting
пустой экземпляр AdOptimizedBusinessProfileSetting
. Вот пример того, как это сделать:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the ad optimized business profile setting to an empty
// instance of AdOptimizedBusinessProfileSetting.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the ad optimized business profile setting to an empty
/// instance of AdOptimizedBusinessProfileSetting.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting()
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the ad optimized business profile setting to an empty instance
// of AdOptimizedBusinessProfileSetting.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting(),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
client.copy_from(
smart_campaign_setting.ad_optimized_business_profile_setting,
client.get_type("AdOptimizedBusinessProfileSetting")
)
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new()
});
Кроме того, поле include_lead_form
дает вам возможность указать, должна ли сгенерированная целевая страница включать форму для потенциальных клиентов, что позволит потенциальным клиентам напрямую связаться с вами, заполнив форму. Вот пример того, как его включить:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to true.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().setIncludeLeadForm(true).build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the AdOptimizedBusinessProfileSetting.include_lead_form
/// field to true.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting
{
IncludeLeadForm = true
}
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field
// to true.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting([
'include_lead_form' => true
]),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
smart_campaign_setting.ad_optimized_business_profile_setting.include_lead_form = True
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting do |a|
a.include_lead_form = true
end
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new({
includeLeadForm => "true"
})
});
Умные кампании зависят от ресурса SmartCampaignSetting
, который содержит дополнительные параметры конфигурации, недоступные в основном ресурсе Campaign
.
Настройка умной кампании не может существовать без привязки к кампании, и это одна из причин, почему лучше всего создавать два объекта в одном запросе на изменение.
Создать кампанию
Поскольку умная кампания в основном управляется автоматически с помощью рекламной технологии Google, вам не нужно задавать в ней много полей.
Основные требования к умным кампаниям:
- У него должен быть собственный
CampaignBudget
. - Для параметра
advertising_channel_type
должно быть установлено значениеAdvertisingChannelTypeEnum.SMART
. - Для
advertising_channel_sub_type
должно быть установлено значениеAdvertisingChannelTypeSubEnum.SMART_CAMPAIGN
.
Обратите внимание, что мы установили значение имени ресурса этой кампании, используя временное имя ресурса . Это позволяет другим объектам в запросе на изменение ссылаться на кампанию до того, как она появится в серверной части.
private MutateOperation createSmartCampaignOperation(long customerId) { MutateOperation.Builder builder = MutateOperation.newBuilder(); builder .getCampaignOperationBuilder() .getCreateBuilder() .setName("Smart campaign " + CodeSampleHelper.getShortPrintableDateTime()) .setStatus(CampaignStatus.PAUSED) .setAdvertisingChannelType(AdvertisingChannelType.SMART) .setAdvertisingChannelSubType(AdvertisingChannelSubType.SMART_CAMPAIGN) // Assigns the resource name with a temporary ID. .setResourceName(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID)) .setCampaignBudget(ResourceNames.campaignBudget(customerId, BUDGET_TEMPORARY_ID)); return builder.build(); }
/// <summary> /// Creates a MutateOperation that creates a new Smart campaign. /// A temporary ID will be assigned to this campaign so that it can be referenced by other /// objects being created in the same Mutate request. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <returns>A MutateOperation that creates a campaign.</returns> private MutateOperation CreateSmartCampaignOperation(long customerId) { return new MutateOperation { CampaignOperation = new CampaignOperation { Create = new Campaign { Name = $"Smart campaign #{ExampleUtilities.GetRandomString()}", // Set the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. Status = CampaignStatus.Paused, // AdvertisingChannelType must be SMART. AdvertisingChannelType = AdvertisingChannelType.Smart, // AdvertisingChannelSubType must be SMART_CAMPAIGN. AdvertisingChannelSubType = AdvertisingChannelSubType.SmartCampaign, // Assign the resource name with a temporary ID. ResourceName = ResourceNames.Campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Set the budget using the given budget resource name. CampaignBudget = ResourceNames.CampaignBudget(customerId, BUDGET_TEMPORARY_ID) } } }; }
private static function createSmartCampaignOperation(int $customerId): MutateOperation { // Creates the campaign object. $campaign = new Campaign([ 'name' => "Smart campaign #" . Helper::getPrintableDatetime(), // Sets the campaign status as PAUSED. The campaign is the only entity in the mutate // request that should have its' status set. 'status' => CampaignStatus::PAUSED, // The advertising channel type is required to be SMART. 'advertising_channel_type' => AdvertisingChannelType::SMART, // The advertising channel sub type is required to be SMART_CAMPAIGN. 'advertising_channel_sub_type' => AdvertisingChannelSubType::SMART_CAMPAIGN, // Assigns the resource name with a temporary ID. 'resource_name' => ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID), // Sets the budget using the given budget resource name. 'campaign_budget' => ResourceNames::forCampaignBudget($customerId, self::BUDGET_TEMPORARY_ID) ]); // Creates the MutateOperation that creates the campaign. return new MutateOperation([ 'campaign_operation' => new CampaignOperation(['create' => $campaign]) ]); }
def create_smart_campaign_operation(client, customer_id): """Creates a MutateOperation that creates a new Smart campaign. A temporary ID will be assigned to this campaign so that it can be referenced by other objects being created in the same Mutate request. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a MutateOperation that creates a campaign. """ mutate_operation = client.get_type("MutateOperation") campaign = mutate_operation.campaign_operation.create campaign.name = f"Smart campaign #{uuid4()}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. campaign.status = client.enums.CampaignStatusEnum.PAUSED # Campaign.AdvertisingChannelType is required to be SMART. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SMART ) # Campaign.AdvertisingChannelSubType is required to be SMART_CAMPAIGN. campaign.advertising_channel_sub_type = ( client.enums.AdvertisingChannelSubTypeEnum.SMART_CAMPAIGN ) # Assign the resource name with a temporary ID. campaign_service = client.get_service("CampaignService") campaign.resource_name = campaign_service.campaign_path( customer_id, _SMART_CAMPAIGN_TEMPORARY_ID ) # Set the budget using the given budget resource name. campaign.campaign_budget = campaign_service.campaign_budget_path( customer_id, _BUDGET_TEMPORARY_ID ) return mutate_operation
# Creates a mutate_operation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can # be referenced by other objects being created in the same mutate request. def create_smart_campaign_operation( client, customer_id) mutate_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.name = "Smart campaign ##{(Time.new.to_f * 1000).to_i}" # Sets the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. c.status = :PAUSED # campaign.advertising_channel_type is required to be SMART. c.advertising_channel_type = :SMART # campaign.advertising_channel_sub_type is required to be SMART_CAMPAIGN. c.advertising_channel_sub_type = :SMART_CAMPAIGN # Assigns the resource name with a temporary ID. c.resource_name = client.path.campaign(customer_id, SMART_CAMPAIGN_TEMPORARY_ID) c.campaign_budget = client.path.campaign_budget(customer_id, BUDGET_TEMPORARY_ID) end end mutate_operation end
# Creates a MutateOperation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can be referenced # by other objects being created in the same Mutate request. sub _create_smart_campaign_operation { my ($customer_id) = @_; return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ campaignOperation => Google::Ads::GoogleAds::V19::Services::CampaignService::CampaignOperation ->new({ create => Google::Ads::GoogleAds::V19::Resources::Campaign->new({ name => "Smart campaign #" . uniqid(), # Set the campaign status as PAUSED. The campaign is the only # entity in the mutate request that should have its status set. status => PAUSED, # AdvertisingChannelType must be SMART. advertisingChannelType => SMART, # AdvertisingChannelSubType must be SMART_CAMPAIGN. advertisingChannelSubType => Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelSubTypeEnum::SMART_CAMPAIGN, # Assign the resource name with a temporary ID. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Set the budget using the given budget resource name. campaignBudget => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign_budget( $customer_id, BUDGET_TEMPORARY_ID )})})}); }
Создайте настройку умной кампании
Ресурс SmartCampaignSetting
используется только для настройки умных кампаний. Этот ресурс нельзя создать, если уже не существует умная кампания, на которую он может ссылаться. По этой причине настройки умной кампании уникальны; вы можете думать о них как о расширении основного ресурса Campaign
.
Поскольку настройка умной кампании настолько тесно связана с кампанией, ее нельзя создать с помощью операции create
. Вместо этого его необходимо создать в операции update
.
В отличие от таких ресурсов, как объекты AdGroup
, у которых есть поле campaign
, определяющее, к какой кампании они принадлежат, в настройках умной кампании имена ресурсов должны обновляться напрямую с использованием того же идентификатора, что и их кампания. Создание новой настройки умной кампании аналогично использованию отдельного ресурса для обновления существующей кампании.
Основные требования к настройкам умной кампании:
- Должна существовать существующая
Campaign
, на которую можно ссылаться. - Связь с
Campaign
определяется в егоresource_name
, а не в полеcampaign
. - Вы должны установить либо
business_profile_location
, либоfinal_url
иbusiness_name
вместе. - К операции
update
необходимо добавитьupdate_mask
, даже если вы используете ее для создания новой настройки умной кампании. - Все умные кампании должны иметь целевую страницу, которую можно настроить с помощью
final_url
или включить автоматическую целевую страницу , которая создает целевую страницу для вашей кампании с использованием информации из данногоbusiness_profile_location
.
private MutateOperation createSmartCampaignSettingOperation( long customerId, String businessProfileLocation, String businessName) { MutateOperation.Builder builder = MutateOperation.newBuilder(); SmartCampaignSetting.Builder settingBuilder = builder .getSmartCampaignSettingOperationBuilder() .getUpdateBuilder() // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. .setResourceName( ResourceNames.smartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID)); // Configures the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. settingBuilder .setFinalUrl(LANDING_PAGE_URL) .setAdvertisingLanguageCode(LANGUAGE_CODE) .getPhoneNumberBuilder() .setCountryCode(COUNTRY_CODE) .setPhoneNumber(PHONE_NUMBER); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if (businessProfileLocation != null) { settingBuilder.setBusinessProfileLocation(businessProfileLocation); } else { settingBuilder.setBusinessName(businessName); } builder .getSmartCampaignSettingOperationBuilder() .setUpdateMask(FieldMasks.allSetFieldsOf(settingBuilder.build())); return builder.build(); }
/// <summary> /// Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings /// are unique in that they only support UPDATE operations, which are used to update and /// create them. Below we will use a temporary ID in the resource name to associate it with /// the campaign created in the previous step. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <param name="businessProfileLocation">The identifier of a Business Profile location.</param> /// <param name="businessName">The name of a Business Profile business.</param> /// <returns>A MutateOperation that creates a SmartCampaignSetting.</returns> private MutateOperation CreateSmartCampaignSettingOperation(long customerId, string businessProfileLocation, string businessName) { SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting { // Set a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. ResourceName = ResourceNames.SmartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Below we configure the SmartCampaignSetting using many of the same details used // to generate a budget suggestion. PhoneNumber = new SmartCampaignSetting.Types.PhoneNumber { CountryCode = COUNTRY_CODE, PhoneNumber_ = PHONE_NUMBER }, FinalUrl = LANDING_PAGE_URL, AdvertisingLanguageCode = LANGUAGE_CODE }; // Either a business profile location or a business name must be added to the // SmartCampaignSetting. if (!string.IsNullOrEmpty(businessProfileLocation)) { // Transform Google Business Location ID to a compatible format before // passing it onto the API. smartCampaignSetting.BusinessProfileLocation = businessProfileLocation; } else { smartCampaignSetting.BusinessName = businessName; } return new MutateOperation { SmartCampaignSettingOperation = new SmartCampaignSettingOperation { Update = smartCampaignSetting, // Set the update mask on the operation. This is required since the smart // campaign setting is created in an UPDATE operation. Here the update mask // will be a list of all the fields that were set on the SmartCampaignSetting. UpdateMask = FieldMasks.AllSetFieldsOf(smartCampaignSetting) } }; }
private static function createSmartCampaignSettingOperation( int $customerId, ?string $businessProfileLocationResourceName, ?string $businessName ): MutateOperation { // Creates the smart campaign setting object. $smartCampaignSetting = new SmartCampaignSetting([ // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. 'resource_name' => ResourceNames::forSmartCampaignSetting( $customerId, self::SMART_CAMPAIGN_TEMPORARY_ID ), // Below we configure the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. 'phone_number' => new PhoneNumber([ 'country_code' => self::COUNTRY_CODE, 'phone_number' => self::PHONE_NUMBER ]), 'final_url' => self::LANDING_PAGE_URL, 'advertising_language_code' => self::LANGUAGE_CODE, ]); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if ($businessProfileLocationResourceName) { $smartCampaignSetting->setBusinessProfileLocation($businessProfileLocationResourceName); } else { $smartCampaignSetting->setBusinessName($businessName); } // Creates the MutateOperation that creates the smart campaign setting with an update. return new MutateOperation([ 'smart_campaign_setting_operation' => new SmartCampaignSettingOperation([ 'update' => $smartCampaignSetting, // Sets the update mask on the operation. This is required since the smart campaign // setting is created in an UPDATE operation. Here the update mask will be a list // of all the fields that were set on the SmartCampaignSetting. 'update_mask' => FieldMasks::allSetFieldsOf($smartCampaignSetting) ]) ]); }
def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name ): """Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings are unique in that they only support UPDATE operations, which are used to update and create them. Below we will use a temporary ID in the resource name to associate it with the campaign created in the previous step. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. business_profile_location: the resource name of a Business Profile location. business_name: the name of a Business Profile. Returns: a MutateOperation that creates a SmartCampaignSetting. """ mutate_operation = client.get_type("MutateOperation") smart_campaign_setting = ( mutate_operation.smart_campaign_setting_operation.update ) # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. smart_campaign_setting.resource_name = client.get_service( "SmartCampaignSettingService" ).smart_campaign_setting_path(customer_id, _SMART_CAMPAIGN_TEMPORARY_ID) # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. smart_campaign_setting.phone_number.country_code = _COUNTRY_CODE smart_campaign_setting.phone_number.phone_number = _PHONE_NUMBER smart_campaign_setting.final_url = _LANDING_PAGE_URL smart_campaign_setting.advertising_language_code = _LANGUAGE_CODE # Set either of the business_profile_location or business_name, depending on # whichever is provided. if business_profile_location: smart_campaign_setting.business_profile_location = ( business_profile_location ) else: smart_campaign_setting.business_name = business_name # Set the update mask on the operation. This is required since the smart # campaign setting is created in an UPDATE operation. Here the update # mask will be a list of all the fields that were set on the # SmartCampaignSetting. client.copy_from( mutate_operation.smart_campaign_setting_operation.update_mask, protobuf_helpers.field_mask(None, smart_campaign_setting._pb), ) return mutate_operation
# Creates a mutate_operation to create a new smart_campaign_setting. # smart_campaign_settings are unique in that they only support UPDATE # operations, which are used to update and create them. Below we will # use a temporary ID in the resource name to associate it with the # campaign created in the previous step. def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name) mutate_operation = client.operation.mutate do |m| m.smart_campaign_setting_operation = client.operation.update_resource.smart_campaign_setting( # Sets a temporary ID in the campaign setting's resource name to # associate it with the campaign created in the previous step. client.path.smart_campaign_setting( customer_id, SMART_CAMPAIGN_TEMPORARY_ID) ) do |scs| # Below we configure the smart_campaign_setting using many of the same # details used to generate a budget suggestion. scs.phone_number = client.resource.phone_number do |p| p.country_code = COUNTRY_CODE p.phone_number = PHONE_NUMBER end scs.final_url = LANDING_PAGE_URL scs.advertising_language_code = LANGUAGE_CODE # It's required that either a business location ID or a business name is # added to the smart_campaign_setting. if business_profile_location scs.business_profile_location = business_profile_location else scs.business_name = business_name end end end mutate_operation end
# Creates a MutateOperation to create a new SmartCampaignSetting. # SmartCampaignSettings are unique in that they only support UPDATE operations, # which are used to update and create them. Below we will use a temporary ID in # the resource name to associate it with the campaign created in the previous step. sub _create_smart_campaign_setting_operation { my ($customer_id, $business_profile_location, $business_name) = @_; my $smart_campaign_setting = Google::Ads::GoogleAds::V19::Resources::SmartCampaignSetting->new({ # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::smart_campaign_setting( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. phoneNumber => Google::Ads::GoogleAds::V19::Resources::PhoneNumber->new({ countryCode => COUNTRY_CODE, phoneNumber => PHONE_NUMBER } ), finalUrl => LANDING_PAGE_URL, advertisingLanguageCode => LANGUAGE_CODE }); # It's required that either a business profile location or a business name is # added to the SmartCampaignSetting. if (defined $business_profile_location) { $smart_campaign_setting->{businessProfileLocation} = $business_profile_location; } else { $smart_campaign_setting->{businessName} = $business_name; } return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ smartCampaignSettingOperation => Google::Ads::GoogleAds::V19::Services::SmartCampaignSettingService::SmartCampaignSettingOperation ->new({ update => $smart_campaign_setting, # Set the update mask on the operation. This is required since the # smart campaign setting is created in an UPDATE operation. Here the # update mask will be a list of all the fields that were set on the # SmartCampaignSetting. updateMask => all_set_fields_of($smart_campaign_setting)})}); }
Целевые страницы
Ваша умная кампания должна иметь целевую страницу, на которую будут направляться зрители. Вы можете либо предоставить final_url
, чтобы использовать существующий веб-сайт, либо создать целевую страницу, выбрав автоматические целевые страницы. На новой целевой странице используется информация из вашего бизнес-профиля.
Чтобы создать целевую страницу для вашей кампании, вы должны указать идентификатор business_profile_location
и установить в поле ad_optimized_business_profile_setting
пустой экземпляр AdOptimizedBusinessProfileSetting
. Вот пример того, как это сделать:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the ad optimized business profile setting to an empty
// instance of AdOptimizedBusinessProfileSetting.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the ad optimized business profile setting to an empty
/// instance of AdOptimizedBusinessProfileSetting.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting()
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the ad optimized business profile setting to an empty instance
// of AdOptimizedBusinessProfileSetting.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting(),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
client.copy_from(
smart_campaign_setting.ad_optimized_business_profile_setting,
client.get_type("AdOptimizedBusinessProfileSetting")
)
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new()
});
Кроме того, поле include_lead_form
дает вам возможность указать, должна ли сгенерированная целевая страница включать форму для потенциальных клиентов, что позволит потенциальным клиентам напрямую связаться с вами, заполнив форму. Вот пример того, как его включить:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to true.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().setIncludeLeadForm(true).build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the AdOptimizedBusinessProfileSetting.include_lead_form
/// field to true.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting
{
IncludeLeadForm = true
}
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field
// to true.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting([
'include_lead_form' => true
]),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
smart_campaign_setting.ad_optimized_business_profile_setting.include_lead_form = True
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting do |a|
a.include_lead_form = true
end
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new({
includeLeadForm => "true"
})
});
Умные кампании зависят от ресурса SmartCampaignSetting
, который содержит дополнительные параметры конфигурации, недоступные в основном ресурсе Campaign
.
Настройка умной кампании не может существовать без привязки к кампании, и это одна из причин, почему лучше всего создавать два объекта в одном запросе на изменение.
Создать кампанию
Поскольку умная кампания в основном управляется автоматически с помощью рекламной технологии Google, вам не нужно задавать в ней много полей.
Основные требования к умным кампаниям:
- У него должен быть собственный
CampaignBudget
. - Для параметра
advertising_channel_type
должно быть установлено значениеAdvertisingChannelTypeEnum.SMART
. - Для
advertising_channel_sub_type
должно быть установлено значениеAdvertisingChannelTypeSubEnum.SMART_CAMPAIGN
.
Обратите внимание, что мы установили значение имени ресурса этой кампании, используя временное имя ресурса . Это позволяет другим объектам в запросе на изменение ссылаться на кампанию до того, как она появится в серверной части.
private MutateOperation createSmartCampaignOperation(long customerId) { MutateOperation.Builder builder = MutateOperation.newBuilder(); builder .getCampaignOperationBuilder() .getCreateBuilder() .setName("Smart campaign " + CodeSampleHelper.getShortPrintableDateTime()) .setStatus(CampaignStatus.PAUSED) .setAdvertisingChannelType(AdvertisingChannelType.SMART) .setAdvertisingChannelSubType(AdvertisingChannelSubType.SMART_CAMPAIGN) // Assigns the resource name with a temporary ID. .setResourceName(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID)) .setCampaignBudget(ResourceNames.campaignBudget(customerId, BUDGET_TEMPORARY_ID)); return builder.build(); }
/// <summary> /// Creates a MutateOperation that creates a new Smart campaign. /// A temporary ID will be assigned to this campaign so that it can be referenced by other /// objects being created in the same Mutate request. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <returns>A MutateOperation that creates a campaign.</returns> private MutateOperation CreateSmartCampaignOperation(long customerId) { return new MutateOperation { CampaignOperation = new CampaignOperation { Create = new Campaign { Name = $"Smart campaign #{ExampleUtilities.GetRandomString()}", // Set the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. Status = CampaignStatus.Paused, // AdvertisingChannelType must be SMART. AdvertisingChannelType = AdvertisingChannelType.Smart, // AdvertisingChannelSubType must be SMART_CAMPAIGN. AdvertisingChannelSubType = AdvertisingChannelSubType.SmartCampaign, // Assign the resource name with a temporary ID. ResourceName = ResourceNames.Campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Set the budget using the given budget resource name. CampaignBudget = ResourceNames.CampaignBudget(customerId, BUDGET_TEMPORARY_ID) } } }; }
private static function createSmartCampaignOperation(int $customerId): MutateOperation { // Creates the campaign object. $campaign = new Campaign([ 'name' => "Smart campaign #" . Helper::getPrintableDatetime(), // Sets the campaign status as PAUSED. The campaign is the only entity in the mutate // request that should have its' status set. 'status' => CampaignStatus::PAUSED, // The advertising channel type is required to be SMART. 'advertising_channel_type' => AdvertisingChannelType::SMART, // The advertising channel sub type is required to be SMART_CAMPAIGN. 'advertising_channel_sub_type' => AdvertisingChannelSubType::SMART_CAMPAIGN, // Assigns the resource name with a temporary ID. 'resource_name' => ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID), // Sets the budget using the given budget resource name. 'campaign_budget' => ResourceNames::forCampaignBudget($customerId, self::BUDGET_TEMPORARY_ID) ]); // Creates the MutateOperation that creates the campaign. return new MutateOperation([ 'campaign_operation' => new CampaignOperation(['create' => $campaign]) ]); }
def create_smart_campaign_operation(client, customer_id): """Creates a MutateOperation that creates a new Smart campaign. A temporary ID will be assigned to this campaign so that it can be referenced by other objects being created in the same Mutate request. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a MutateOperation that creates a campaign. """ mutate_operation = client.get_type("MutateOperation") campaign = mutate_operation.campaign_operation.create campaign.name = f"Smart campaign #{uuid4()}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. campaign.status = client.enums.CampaignStatusEnum.PAUSED # Campaign.AdvertisingChannelType is required to be SMART. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SMART ) # Campaign.AdvertisingChannelSubType is required to be SMART_CAMPAIGN. campaign.advertising_channel_sub_type = ( client.enums.AdvertisingChannelSubTypeEnum.SMART_CAMPAIGN ) # Assign the resource name with a temporary ID. campaign_service = client.get_service("CampaignService") campaign.resource_name = campaign_service.campaign_path( customer_id, _SMART_CAMPAIGN_TEMPORARY_ID ) # Set the budget using the given budget resource name. campaign.campaign_budget = campaign_service.campaign_budget_path( customer_id, _BUDGET_TEMPORARY_ID ) return mutate_operation
# Creates a mutate_operation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can # be referenced by other objects being created in the same mutate request. def create_smart_campaign_operation( client, customer_id) mutate_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.name = "Smart campaign ##{(Time.new.to_f * 1000).to_i}" # Sets the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. c.status = :PAUSED # campaign.advertising_channel_type is required to be SMART. c.advertising_channel_type = :SMART # campaign.advertising_channel_sub_type is required to be SMART_CAMPAIGN. c.advertising_channel_sub_type = :SMART_CAMPAIGN # Assigns the resource name with a temporary ID. c.resource_name = client.path.campaign(customer_id, SMART_CAMPAIGN_TEMPORARY_ID) c.campaign_budget = client.path.campaign_budget(customer_id, BUDGET_TEMPORARY_ID) end end mutate_operation end
# Creates a MutateOperation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can be referenced # by other objects being created in the same Mutate request. sub _create_smart_campaign_operation { my ($customer_id) = @_; return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ campaignOperation => Google::Ads::GoogleAds::V19::Services::CampaignService::CampaignOperation ->new({ create => Google::Ads::GoogleAds::V19::Resources::Campaign->new({ name => "Smart campaign #" . uniqid(), # Set the campaign status as PAUSED. The campaign is the only # entity in the mutate request that should have its status set. status => PAUSED, # AdvertisingChannelType must be SMART. advertisingChannelType => SMART, # AdvertisingChannelSubType must be SMART_CAMPAIGN. advertisingChannelSubType => Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelSubTypeEnum::SMART_CAMPAIGN, # Assign the resource name with a temporary ID. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Set the budget using the given budget resource name. campaignBudget => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign_budget( $customer_id, BUDGET_TEMPORARY_ID )})})}); }
Создайте настройку умной кампании
Ресурс SmartCampaignSetting
используется только для настройки умных кампаний. Этот ресурс нельзя создать, если уже не существует умная кампания, на которую он может ссылаться. По этой причине настройки умной кампании уникальны; вы можете думать о них как о расширении основного ресурса Campaign
.
Поскольку настройка умной кампании настолько тесно связана с кампанией, ее нельзя создать с помощью операции create
. Вместо этого его необходимо создать в операции update
.
В отличие от таких ресурсов, как объекты AdGroup
, у которых есть поле campaign
, определяющее, к какой кампании они принадлежат, в настройках умной кампании имена ресурсов должны обновляться напрямую с использованием того же идентификатора, что и их кампания. Создание новой настройки умной кампании аналогично использованию отдельного ресурса для обновления существующей кампании.
Основные требования к настройкам умной кампании:
- Должна существовать существующая
Campaign
, на которую можно ссылаться. - Связь с
Campaign
определяется в егоresource_name
, а не в полеcampaign
. - Вы должны установить либо
business_profile_location
, либоfinal_url
иbusiness_name
вместе. - К операции
update
необходимо добавитьupdate_mask
, даже если вы используете ее для создания новой настройки умной кампании. - Все умные кампании должны иметь целевую страницу, которую можно настроить с помощью
final_url
или включить автоматическую целевую страницу , которая создает целевую страницу для вашей кампании с использованием информации из заданногоbusiness_profile_location
.
private MutateOperation createSmartCampaignSettingOperation( long customerId, String businessProfileLocation, String businessName) { MutateOperation.Builder builder = MutateOperation.newBuilder(); SmartCampaignSetting.Builder settingBuilder = builder .getSmartCampaignSettingOperationBuilder() .getUpdateBuilder() // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. .setResourceName( ResourceNames.smartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID)); // Configures the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. settingBuilder .setFinalUrl(LANDING_PAGE_URL) .setAdvertisingLanguageCode(LANGUAGE_CODE) .getPhoneNumberBuilder() .setCountryCode(COUNTRY_CODE) .setPhoneNumber(PHONE_NUMBER); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if (businessProfileLocation != null) { settingBuilder.setBusinessProfileLocation(businessProfileLocation); } else { settingBuilder.setBusinessName(businessName); } builder .getSmartCampaignSettingOperationBuilder() .setUpdateMask(FieldMasks.allSetFieldsOf(settingBuilder.build())); return builder.build(); }
/// <summary> /// Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings /// are unique in that they only support UPDATE operations, which are used to update and /// create them. Below we will use a temporary ID in the resource name to associate it with /// the campaign created in the previous step. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <param name="businessProfileLocation">The identifier of a Business Profile location.</param> /// <param name="businessName">The name of a Business Profile business.</param> /// <returns>A MutateOperation that creates a SmartCampaignSetting.</returns> private MutateOperation CreateSmartCampaignSettingOperation(long customerId, string businessProfileLocation, string businessName) { SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting { // Set a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. ResourceName = ResourceNames.SmartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Below we configure the SmartCampaignSetting using many of the same details used // to generate a budget suggestion. PhoneNumber = new SmartCampaignSetting.Types.PhoneNumber { CountryCode = COUNTRY_CODE, PhoneNumber_ = PHONE_NUMBER }, FinalUrl = LANDING_PAGE_URL, AdvertisingLanguageCode = LANGUAGE_CODE }; // Either a business profile location or a business name must be added to the // SmartCampaignSetting. if (!string.IsNullOrEmpty(businessProfileLocation)) { // Transform Google Business Location ID to a compatible format before // passing it onto the API. smartCampaignSetting.BusinessProfileLocation = businessProfileLocation; } else { smartCampaignSetting.BusinessName = businessName; } return new MutateOperation { SmartCampaignSettingOperation = new SmartCampaignSettingOperation { Update = smartCampaignSetting, // Set the update mask on the operation. This is required since the smart // campaign setting is created in an UPDATE operation. Here the update mask // will be a list of all the fields that were set on the SmartCampaignSetting. UpdateMask = FieldMasks.AllSetFieldsOf(smartCampaignSetting) } }; }
private static function createSmartCampaignSettingOperation( int $customerId, ?string $businessProfileLocationResourceName, ?string $businessName ): MutateOperation { // Creates the smart campaign setting object. $smartCampaignSetting = new SmartCampaignSetting([ // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. 'resource_name' => ResourceNames::forSmartCampaignSetting( $customerId, self::SMART_CAMPAIGN_TEMPORARY_ID ), // Below we configure the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. 'phone_number' => new PhoneNumber([ 'country_code' => self::COUNTRY_CODE, 'phone_number' => self::PHONE_NUMBER ]), 'final_url' => self::LANDING_PAGE_URL, 'advertising_language_code' => self::LANGUAGE_CODE, ]); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if ($businessProfileLocationResourceName) { $smartCampaignSetting->setBusinessProfileLocation($businessProfileLocationResourceName); } else { $smartCampaignSetting->setBusinessName($businessName); } // Creates the MutateOperation that creates the smart campaign setting with an update. return new MutateOperation([ 'smart_campaign_setting_operation' => new SmartCampaignSettingOperation([ 'update' => $smartCampaignSetting, // Sets the update mask on the operation. This is required since the smart campaign // setting is created in an UPDATE operation. Here the update mask will be a list // of all the fields that were set on the SmartCampaignSetting. 'update_mask' => FieldMasks::allSetFieldsOf($smartCampaignSetting) ]) ]); }
def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name ): """Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings are unique in that they only support UPDATE operations, which are used to update and create them. Below we will use a temporary ID in the resource name to associate it with the campaign created in the previous step. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. business_profile_location: the resource name of a Business Profile location. business_name: the name of a Business Profile. Returns: a MutateOperation that creates a SmartCampaignSetting. """ mutate_operation = client.get_type("MutateOperation") smart_campaign_setting = ( mutate_operation.smart_campaign_setting_operation.update ) # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. smart_campaign_setting.resource_name = client.get_service( "SmartCampaignSettingService" ).smart_campaign_setting_path(customer_id, _SMART_CAMPAIGN_TEMPORARY_ID) # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. smart_campaign_setting.phone_number.country_code = _COUNTRY_CODE smart_campaign_setting.phone_number.phone_number = _PHONE_NUMBER smart_campaign_setting.final_url = _LANDING_PAGE_URL smart_campaign_setting.advertising_language_code = _LANGUAGE_CODE # Set either of the business_profile_location or business_name, depending on # whichever is provided. if business_profile_location: smart_campaign_setting.business_profile_location = ( business_profile_location ) else: smart_campaign_setting.business_name = business_name # Set the update mask on the operation. This is required since the smart # campaign setting is created in an UPDATE operation. Here the update # mask will be a list of all the fields that were set on the # SmartCampaignSetting. client.copy_from( mutate_operation.smart_campaign_setting_operation.update_mask, protobuf_helpers.field_mask(None, smart_campaign_setting._pb), ) return mutate_operation
# Creates a mutate_operation to create a new smart_campaign_setting. # smart_campaign_settings are unique in that they only support UPDATE # operations, which are used to update and create them. Below we will # use a temporary ID in the resource name to associate it with the # campaign created in the previous step. def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name) mutate_operation = client.operation.mutate do |m| m.smart_campaign_setting_operation = client.operation.update_resource.smart_campaign_setting( # Sets a temporary ID in the campaign setting's resource name to # associate it with the campaign created in the previous step. client.path.smart_campaign_setting( customer_id, SMART_CAMPAIGN_TEMPORARY_ID) ) do |scs| # Below we configure the smart_campaign_setting using many of the same # details used to generate a budget suggestion. scs.phone_number = client.resource.phone_number do |p| p.country_code = COUNTRY_CODE p.phone_number = PHONE_NUMBER end scs.final_url = LANDING_PAGE_URL scs.advertising_language_code = LANGUAGE_CODE # It's required that either a business location ID or a business name is # added to the smart_campaign_setting. if business_profile_location scs.business_profile_location = business_profile_location else scs.business_name = business_name end end end mutate_operation end
# Creates a MutateOperation to create a new SmartCampaignSetting. # SmartCampaignSettings are unique in that they only support UPDATE operations, # which are used to update and create them. Below we will use a temporary ID in # the resource name to associate it with the campaign created in the previous step. sub _create_smart_campaign_setting_operation { my ($customer_id, $business_profile_location, $business_name) = @_; my $smart_campaign_setting = Google::Ads::GoogleAds::V19::Resources::SmartCampaignSetting->new({ # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::smart_campaign_setting( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. phoneNumber => Google::Ads::GoogleAds::V19::Resources::PhoneNumber->new({ countryCode => COUNTRY_CODE, phoneNumber => PHONE_NUMBER } ), finalUrl => LANDING_PAGE_URL, advertisingLanguageCode => LANGUAGE_CODE }); # It's required that either a business profile location or a business name is # added to the SmartCampaignSetting. if (defined $business_profile_location) { $smart_campaign_setting->{businessProfileLocation} = $business_profile_location; } else { $smart_campaign_setting->{businessName} = $business_name; } return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ smartCampaignSettingOperation => Google::Ads::GoogleAds::V19::Services::SmartCampaignSettingService::SmartCampaignSettingOperation ->new({ update => $smart_campaign_setting, # Set the update mask on the operation. This is required since the # smart campaign setting is created in an UPDATE operation. Here the # update mask will be a list of all the fields that were set on the # SmartCampaignSetting. updateMask => all_set_fields_of($smart_campaign_setting)})}); }
Целевые страницы
Ваша умная кампания должна иметь целевую страницу, на которую будут направляться зрители. Вы можете либо предоставить final_url
, чтобы использовать существующий веб-сайт, либо создать целевую страницу, выбрав автоматические целевые страницы. На новой целевой странице используется информация из вашего бизнес-профиля.
Чтобы создать целевую страницу для вашей кампании, вы должны указать идентификатор business_profile_location
и установить в поле ad_optimized_business_profile_setting
пустой экземпляр AdOptimizedBusinessProfileSetting
. Вот пример того, как это сделать:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the ad optimized business profile setting to an empty
// instance of AdOptimizedBusinessProfileSetting.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the ad optimized business profile setting to an empty
/// instance of AdOptimizedBusinessProfileSetting.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting()
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the ad optimized business profile setting to an empty instance
// of AdOptimizedBusinessProfileSetting.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting(),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
client.copy_from(
smart_campaign_setting.ad_optimized_business_profile_setting,
client.get_type("AdOptimizedBusinessProfileSetting")
)
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new()
});
Кроме того, поле include_lead_form
дает вам возможность указать, должна ли сгенерированная целевая страница включать форму для потенциальных клиентов, позволяющую потенциальным клиентам напрямую связаться с вами, заполнив форму. Вот пример того, как его включить:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to true.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().setIncludeLeadForm(true).build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the AdOptimizedBusinessProfileSetting.include_lead_form
/// field to true.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting
{
IncludeLeadForm = true
}
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field
// to true.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting([
'include_lead_form' => true
]),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
smart_campaign_setting.ad_optimized_business_profile_setting.include_lead_form = True
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting do |a|
a.include_lead_form = true
end
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new({
includeLeadForm => "true"
})
});
Умные кампании зависят от ресурса SmartCampaignSetting
, который содержит дополнительные параметры конфигурации, недоступные в основном ресурсе Campaign
.
Настройка умной кампании не может существовать без привязки к кампании, и это одна из причин, почему лучше всего создавать два объекта в одном запросе на изменение.
Создать кампанию
Поскольку умная кампания в основном управляется автоматически с помощью рекламной технологии Google, вам не нужно задавать в ней много полей.
Основные требования к умным кампаниям:
- У него должен быть собственный
CampaignBudget
. - Для параметра
advertising_channel_type
должно быть установлено значениеAdvertisingChannelTypeEnum.SMART
. - Для
advertising_channel_sub_type
должно быть установлено значениеAdvertisingChannelTypeSubEnum.SMART_CAMPAIGN
.
Обратите внимание, что мы установили значение имени ресурса этой кампании, используя временное имя ресурса . Это позволяет другим объектам в запросе на изменение ссылаться на кампанию до того, как она появится в серверной части.
private MutateOperation createSmartCampaignOperation(long customerId) { MutateOperation.Builder builder = MutateOperation.newBuilder(); builder .getCampaignOperationBuilder() .getCreateBuilder() .setName("Smart campaign " + CodeSampleHelper.getShortPrintableDateTime()) .setStatus(CampaignStatus.PAUSED) .setAdvertisingChannelType(AdvertisingChannelType.SMART) .setAdvertisingChannelSubType(AdvertisingChannelSubType.SMART_CAMPAIGN) // Assigns the resource name with a temporary ID. .setResourceName(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID)) .setCampaignBudget(ResourceNames.campaignBudget(customerId, BUDGET_TEMPORARY_ID)); return builder.build(); }
/// <summary> /// Creates a MutateOperation that creates a new Smart campaign. /// A temporary ID will be assigned to this campaign so that it can be referenced by other /// objects being created in the same Mutate request. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <returns>A MutateOperation that creates a campaign.</returns> private MutateOperation CreateSmartCampaignOperation(long customerId) { return new MutateOperation { CampaignOperation = new CampaignOperation { Create = new Campaign { Name = $"Smart campaign #{ExampleUtilities.GetRandomString()}", // Set the campaign status as PAUSED. The campaign is the only entity in // the mutate request that should have its status set. Status = CampaignStatus.Paused, // AdvertisingChannelType must be SMART. AdvertisingChannelType = AdvertisingChannelType.Smart, // AdvertisingChannelSubType must be SMART_CAMPAIGN. AdvertisingChannelSubType = AdvertisingChannelSubType.SmartCampaign, // Assign the resource name with a temporary ID. ResourceName = ResourceNames.Campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Set the budget using the given budget resource name. CampaignBudget = ResourceNames.CampaignBudget(customerId, BUDGET_TEMPORARY_ID) } } }; }
private static function createSmartCampaignOperation(int $customerId): MutateOperation { // Creates the campaign object. $campaign = new Campaign([ 'name' => "Smart campaign #" . Helper::getPrintableDatetime(), // Sets the campaign status as PAUSED. The campaign is the only entity in the mutate // request that should have its' status set. 'status' => CampaignStatus::PAUSED, // The advertising channel type is required to be SMART. 'advertising_channel_type' => AdvertisingChannelType::SMART, // The advertising channel sub type is required to be SMART_CAMPAIGN. 'advertising_channel_sub_type' => AdvertisingChannelSubType::SMART_CAMPAIGN, // Assigns the resource name with a temporary ID. 'resource_name' => ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID), // Sets the budget using the given budget resource name. 'campaign_budget' => ResourceNames::forCampaignBudget($customerId, self::BUDGET_TEMPORARY_ID) ]); // Creates the MutateOperation that creates the campaign. return new MutateOperation([ 'campaign_operation' => new CampaignOperation(['create' => $campaign]) ]); }
def create_smart_campaign_operation(client, customer_id): """Creates a MutateOperation that creates a new Smart campaign. A temporary ID will be assigned to this campaign so that it can be referenced by other objects being created in the same Mutate request. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a MutateOperation that creates a campaign. """ mutate_operation = client.get_type("MutateOperation") campaign = mutate_operation.campaign_operation.create campaign.name = f"Smart campaign #{uuid4()}" # Set the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. campaign.status = client.enums.CampaignStatusEnum.PAUSED # Campaign.AdvertisingChannelType is required to be SMART. campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SMART ) # Campaign.AdvertisingChannelSubType is required to be SMART_CAMPAIGN. campaign.advertising_channel_sub_type = ( client.enums.AdvertisingChannelSubTypeEnum.SMART_CAMPAIGN ) # Assign the resource name with a temporary ID. campaign_service = client.get_service("CampaignService") campaign.resource_name = campaign_service.campaign_path( customer_id, _SMART_CAMPAIGN_TEMPORARY_ID ) # Set the budget using the given budget resource name. campaign.campaign_budget = campaign_service.campaign_budget_path( customer_id, _BUDGET_TEMPORARY_ID ) return mutate_operation
# Creates a mutate_operation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can # be referenced by other objects being created in the same mutate request. def create_smart_campaign_operation( client, customer_id) mutate_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.name = "Smart campaign ##{(Time.new.to_f * 1000).to_i}" # Sets the campaign status as PAUSED. The campaign is the only entity in # the mutate request that should have its' status set. c.status = :PAUSED # campaign.advertising_channel_type is required to be SMART. c.advertising_channel_type = :SMART # campaign.advertising_channel_sub_type is required to be SMART_CAMPAIGN. c.advertising_channel_sub_type = :SMART_CAMPAIGN # Assigns the resource name with a temporary ID. c.resource_name = client.path.campaign(customer_id, SMART_CAMPAIGN_TEMPORARY_ID) c.campaign_budget = client.path.campaign_budget(customer_id, BUDGET_TEMPORARY_ID) end end mutate_operation end
# Creates a MutateOperation that creates a new Smart campaign. # A temporary ID will be assigned to this campaign so that it can be referenced # by other objects being created in the same Mutate request. sub _create_smart_campaign_operation { my ($customer_id) = @_; return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ campaignOperation => Google::Ads::GoogleAds::V19::Services::CampaignService::CampaignOperation ->new({ create => Google::Ads::GoogleAds::V19::Resources::Campaign->new({ name => "Smart campaign #" . uniqid(), # Set the campaign status as PAUSED. The campaign is the only # entity in the mutate request that should have its status set. status => PAUSED, # AdvertisingChannelType must be SMART. advertisingChannelType => SMART, # AdvertisingChannelSubType must be SMART_CAMPAIGN. advertisingChannelSubType => Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelSubTypeEnum::SMART_CAMPAIGN, # Assign the resource name with a temporary ID. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Set the budget using the given budget resource name. campaignBudget => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign_budget( $customer_id, BUDGET_TEMPORARY_ID )})})}); }
Создайте настройку умной кампании
Ресурс SmartCampaignSetting
используется только для настройки умных кампаний. Этот ресурс нельзя создать, если уже не существует умная кампания, на которую он может ссылаться. По этой причине настройки умной кампании уникальны; вы можете думать о них как о расширении основного ресурса Campaign
.
Поскольку настройка умной кампании настолько тесно связана с кампанией, ее нельзя создать с помощью операции create
. Вместо этого его необходимо создать в операции update
.
В отличие от таких ресурсов, как объекты AdGroup
, у которых есть поле campaign
, определяющее, к какой кампании они принадлежат, в настройках умной кампании имена ресурсов должны обновляться напрямую с использованием того же идентификатора, что и их кампания. Создание новой настройки умной кампании аналогично использованию отдельного ресурса для обновления существующей кампании.
Основные требования к настройкам умной кампании:
- Должна существовать существующая
Campaign
, на которую можно ссылаться. - Связь с
Campaign
определяется в егоresource_name
, а не в полеcampaign
. - Вы должны установить либо
business_profile_location
, либоfinal_url
иbusiness_name
вместе. - К операции
update
необходимо добавитьupdate_mask
, даже если вы используете ее для создания новой настройки умной кампании. - Все умные кампании должны иметь целевую страницу, которую можно настроить с помощью
final_url
или включить автоматическую целевую страницу , которая создает целевую страницу для вашей кампании с использованием информации из данногоbusiness_profile_location
.
private MutateOperation createSmartCampaignSettingOperation( long customerId, String businessProfileLocation, String businessName) { MutateOperation.Builder builder = MutateOperation.newBuilder(); SmartCampaignSetting.Builder settingBuilder = builder .getSmartCampaignSettingOperationBuilder() .getUpdateBuilder() // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. .setResourceName( ResourceNames.smartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID)); // Configures the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. settingBuilder .setFinalUrl(LANDING_PAGE_URL) .setAdvertisingLanguageCode(LANGUAGE_CODE) .getPhoneNumberBuilder() .setCountryCode(COUNTRY_CODE) .setPhoneNumber(PHONE_NUMBER); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if (businessProfileLocation != null) { settingBuilder.setBusinessProfileLocation(businessProfileLocation); } else { settingBuilder.setBusinessName(businessName); } builder .getSmartCampaignSettingOperationBuilder() .setUpdateMask(FieldMasks.allSetFieldsOf(settingBuilder.build())); return builder.build(); }
/// <summary> /// Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings /// are unique in that they only support UPDATE operations, which are used to update and /// create them. Below we will use a temporary ID in the resource name to associate it with /// the campaign created in the previous step. /// </summary> /// <param name="customerId">The Google Ads customer ID.</param> /// <param name="businessProfileLocation">The identifier of a Business Profile location.</param> /// <param name="businessName">The name of a Business Profile business.</param> /// <returns>A MutateOperation that creates a SmartCampaignSetting.</returns> private MutateOperation CreateSmartCampaignSettingOperation(long customerId, string businessProfileLocation, string businessName) { SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting { // Set a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. ResourceName = ResourceNames.SmartCampaignSetting(customerId, SMART_CAMPAIGN_TEMPORARY_ID), // Below we configure the SmartCampaignSetting using many of the same details used // to generate a budget suggestion. PhoneNumber = new SmartCampaignSetting.Types.PhoneNumber { CountryCode = COUNTRY_CODE, PhoneNumber_ = PHONE_NUMBER }, FinalUrl = LANDING_PAGE_URL, AdvertisingLanguageCode = LANGUAGE_CODE }; // Either a business profile location or a business name must be added to the // SmartCampaignSetting. if (!string.IsNullOrEmpty(businessProfileLocation)) { // Transform Google Business Location ID to a compatible format before // passing it onto the API. smartCampaignSetting.BusinessProfileLocation = businessProfileLocation; } else { smartCampaignSetting.BusinessName = businessName; } return new MutateOperation { SmartCampaignSettingOperation = new SmartCampaignSettingOperation { Update = smartCampaignSetting, // Set the update mask on the operation. This is required since the smart // campaign setting is created in an UPDATE operation. Here the update mask // will be a list of all the fields that were set on the SmartCampaignSetting. UpdateMask = FieldMasks.AllSetFieldsOf(smartCampaignSetting) } }; }
private static function createSmartCampaignSettingOperation( int $customerId, ?string $businessProfileLocationResourceName, ?string $businessName ): MutateOperation { // Creates the smart campaign setting object. $smartCampaignSetting = new SmartCampaignSetting([ // Sets a temporary ID in the campaign setting's resource name to associate it with // the campaign created in the previous step. 'resource_name' => ResourceNames::forSmartCampaignSetting( $customerId, self::SMART_CAMPAIGN_TEMPORARY_ID ), // Below we configure the SmartCampaignSetting using many of the same details used to // generate a budget suggestion. 'phone_number' => new PhoneNumber([ 'country_code' => self::COUNTRY_CODE, 'phone_number' => self::PHONE_NUMBER ]), 'final_url' => self::LANDING_PAGE_URL, 'advertising_language_code' => self::LANGUAGE_CODE, ]); // It's required that either a business profile location resource name or a business name is // added to the SmartCampaignSetting. if ($businessProfileLocationResourceName) { $smartCampaignSetting->setBusinessProfileLocation($businessProfileLocationResourceName); } else { $smartCampaignSetting->setBusinessName($businessName); } // Creates the MutateOperation that creates the smart campaign setting with an update. return new MutateOperation([ 'smart_campaign_setting_operation' => new SmartCampaignSettingOperation([ 'update' => $smartCampaignSetting, // Sets the update mask on the operation. This is required since the smart campaign // setting is created in an UPDATE operation. Here the update mask will be a list // of all the fields that were set on the SmartCampaignSetting. 'update_mask' => FieldMasks::allSetFieldsOf($smartCampaignSetting) ]) ]); }
def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name ): """Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings are unique in that they only support UPDATE operations, which are used to update and create them. Below we will use a temporary ID in the resource name to associate it with the campaign created in the previous step. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. business_profile_location: the resource name of a Business Profile location. business_name: the name of a Business Profile. Returns: a MutateOperation that creates a SmartCampaignSetting. """ mutate_operation = client.get_type("MutateOperation") smart_campaign_setting = ( mutate_operation.smart_campaign_setting_operation.update ) # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. smart_campaign_setting.resource_name = client.get_service( "SmartCampaignSettingService" ).smart_campaign_setting_path(customer_id, _SMART_CAMPAIGN_TEMPORARY_ID) # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. smart_campaign_setting.phone_number.country_code = _COUNTRY_CODE smart_campaign_setting.phone_number.phone_number = _PHONE_NUMBER smart_campaign_setting.final_url = _LANDING_PAGE_URL smart_campaign_setting.advertising_language_code = _LANGUAGE_CODE # Set either of the business_profile_location or business_name, depending on # whichever is provided. if business_profile_location: smart_campaign_setting.business_profile_location = ( business_profile_location ) else: smart_campaign_setting.business_name = business_name # Set the update mask on the operation. This is required since the smart # campaign setting is created in an UPDATE operation. Here the update # mask will be a list of all the fields that were set on the # SmartCampaignSetting. client.copy_from( mutate_operation.smart_campaign_setting_operation.update_mask, protobuf_helpers.field_mask(None, smart_campaign_setting._pb), ) return mutate_operation
# Creates a mutate_operation to create a new smart_campaign_setting. # smart_campaign_settings are unique in that they only support UPDATE # operations, which are used to update and create them. Below we will # use a temporary ID in the resource name to associate it with the # campaign created in the previous step. def create_smart_campaign_setting_operation( client, customer_id, business_profile_location, business_name) mutate_operation = client.operation.mutate do |m| m.smart_campaign_setting_operation = client.operation.update_resource.smart_campaign_setting( # Sets a temporary ID in the campaign setting's resource name to # associate it with the campaign created in the previous step. client.path.smart_campaign_setting( customer_id, SMART_CAMPAIGN_TEMPORARY_ID) ) do |scs| # Below we configure the smart_campaign_setting using many of the same # details used to generate a budget suggestion. scs.phone_number = client.resource.phone_number do |p| p.country_code = COUNTRY_CODE p.phone_number = PHONE_NUMBER end scs.final_url = LANDING_PAGE_URL scs.advertising_language_code = LANGUAGE_CODE # It's required that either a business location ID or a business name is # added to the smart_campaign_setting. if business_profile_location scs.business_profile_location = business_profile_location else scs.business_name = business_name end end end mutate_operation end
# Creates a MutateOperation to create a new SmartCampaignSetting. # SmartCampaignSettings are unique in that they only support UPDATE operations, # which are used to update and create them. Below we will use a temporary ID in # the resource name to associate it with the campaign created in the previous step. sub _create_smart_campaign_setting_operation { my ($customer_id, $business_profile_location, $business_name) = @_; my $smart_campaign_setting = Google::Ads::GoogleAds::V19::Resources::SmartCampaignSetting->new({ # Set a temporary ID in the campaign setting's resource name to associate it # with the campaign created in the previous step. resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::smart_campaign_setting( $customer_id, SMART_CAMPAIGN_TEMPORARY_ID ), # Below we configure the SmartCampaignSetting using many of the same # details used to generate a budget suggestion. phoneNumber => Google::Ads::GoogleAds::V19::Resources::PhoneNumber->new({ countryCode => COUNTRY_CODE, phoneNumber => PHONE_NUMBER } ), finalUrl => LANDING_PAGE_URL, advertisingLanguageCode => LANGUAGE_CODE }); # It's required that either a business profile location or a business name is # added to the SmartCampaignSetting. if (defined $business_profile_location) { $smart_campaign_setting->{businessProfileLocation} = $business_profile_location; } else { $smart_campaign_setting->{businessName} = $business_name; } return Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation-> new({ smartCampaignSettingOperation => Google::Ads::GoogleAds::V19::Services::SmartCampaignSettingService::SmartCampaignSettingOperation ->new({ update => $smart_campaign_setting, # Set the update mask on the operation. This is required since the # smart campaign setting is created in an UPDATE operation. Here the # update mask will be a list of all the fields that were set on the # SmartCampaignSetting. updateMask => all_set_fields_of($smart_campaign_setting)})}); }
Целевые страницы
Ваша умная кампания должна иметь целевую страницу, на которую будут направляться зрители. Вы можете либо предоставить final_url
, чтобы использовать существующий веб-сайт, либо создать целевую страницу, выбрав автоматические целевые страницы. На новой целевой странице используется информация из вашего бизнес-профиля.
Чтобы создать целевую страницу для вашей кампании, вы должны указать идентификатор business_profile_location
и установить в поле ad_optimized_business_profile_setting
пустой экземпляр AdOptimizedBusinessProfileSetting
. Вот пример того, как это сделать:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the ad optimized business profile setting to an empty
// instance of AdOptimizedBusinessProfileSetting.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the ad optimized business profile setting to an empty
/// instance of AdOptimizedBusinessProfileSetting.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting()
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the ad optimized business profile setting to an empty instance
// of AdOptimizedBusinessProfileSetting.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting(),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
client.copy_from(
smart_campaign_setting.ad_optimized_business_profile_setting,
client.get_type("AdOptimizedBusinessProfileSetting")
)
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the ad optimized business profile setting to an empty instance of
# AdOptimizedBusinessProfileSetting.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new()
});
Кроме того, поле include_lead_form
дает вам возможность указать, должна ли сгенерированная целевая страница включать форму для потенциальных клиентов, что позволит потенциальным клиентам напрямую связаться с вами, заполнив форму. Вот пример того, как его включить:
SmartCampaignSetting smartCampaignSetting =
SmartCampaignSetting.newBuilder()
.setBusinessProfileLocation(businessProfileLocation)
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to true.
.setAdOptimizedBusinessProfileSetting(
AdOptimizedBusinessProfileSetting.newBuilder().setIncludeLeadForm(true).build())
.build();
SmartCampaignSetting smartCampaignSetting = new SmartCampaignSetting()
{
BusinessProfileLocation = businessProfileLocation,
/// Sets the AdOptimizedBusinessProfileSetting.include_lead_form
/// field to true.
AdOptimizedBusinessProfileSetting =
new SmartCampaignSetting.Types.AdOptimizedBusinessProfileSetting
{
IncludeLeadForm = true
}
};
$smartCampaignSetting = new SmartCampaignSetting([
'business_profile_location' => business_profile_location,
// Sets the AdOptimizedBusinessProfileSetting.include_lead_form field
// to true.
'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting([
'include_lead_form' => true
]),
]);
smart_campaign_setting = client.get_type("SmartCampaignSetting")
smart_campaign_setting.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
smart_campaign_setting.ad_optimized_business_profile_setting.include_lead_form = True
smart_campaign_setting = client.resource.smart_campaign_setting do |s|
s.business_profile_location = business_profile_location
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
s.ad_optimized_business_profile_setting = client.resource.ad_optimized_business_profile_setting do |a|
a.include_lead_form = true
end
end
my $campaign = Google::Ads::GoogleAds::V19::Resources::Campaign->new({
businessProfileLocation => $business_profile_location,
# Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to
# true.
adOptimizedBusinessProfileSetting =>
Google::Ads::GoogleAds::V19::Common::AdOptimizedBusinessProfileSetting->new({
includeLeadForm => "true"
})
});