#!/usr/bin/perl -w
use
lib
"$Bin/../../lib"
;
use
Google::Ads::GoogleAds::V16::Services::AssetSetAssetService::AssetSetAssetOperation;
use
Google::Ads::GoogleAds::V16::Services::CampaignAssetSetService::CampaignAssetSetOperation;
my
$customer_id
=
"INSERT_CUSTOMER_ID_HERE"
;
my
$campaign_id
=
"INSERT_CAMPAIGN_ID_HERE"
;
sub
add_dynamic_remarketing_asset {
my
(
$api_client
,
$customer_id
,
$campaign_id
) =
@_
;
my
$asset_resource_name
= create_asset(
$api_client
,
$customer_id
);
my
$asset_set_resource_name
= create_asset_set(
$api_client
,
$customer_id
);
add_assets_to_asset_set(
$api_client
,
$customer_id
,
$asset_resource_name
,
$asset_set_resource_name
);
link_asset_set_to_campaign(
$api_client
,
$customer_id
,
$campaign_id
,
$asset_set_resource_name
);
return
1;
}
sub
create_asset {
my
(
$api_client
,
$customer_id
) =
@_
;
my
$education_asset
=
Google::Ads::GoogleAds::V16::Common::DynamicEducationAsset->new({
schoolName
=>
"The University of Unknown"
,
address
=>
"Building 1, New York, 12345, USA"
,
programName
=>
"BSc. Computer Science"
,
subject
=>
"Computer Science"
,
programDescription
=>
"Slinging code for fun and profit!"
,
programId
=>
"bsc-cs-uofu"
,
locationId
=>
"nyc"
,
androidAppLink
=>
iosAppStoreId
=> 123
});
my
$asset
= Google::Ads::GoogleAds::V16::Resources::Asset->new({
dynamicEducationAsset
=>
$education_asset
,
my
$operation
=
Google::Ads::GoogleAds::V16::Services::AssetService::AssetOperation->new({
create
=>
$asset
});
my
$response
=
$api_client
->AssetService()->mutate({
customerId
=>
$customer_id
,
operations
=> [
$operation
]});
my
$resource_name
=
$response
->{results}[0]{resourceName};
printf
"Created a dynamic education asset with resource name '%s'.\n"
,
$resource_name
;
return
$resource_name
;
}
sub
create_asset_set {
my
(
$api_client
,
$customer_id
) =
@_
;
my
$asset_set
= Google::Ads::GoogleAds::V16::Resources::AssetSet->new({
name
=>
"My dynamic remarketing assets #"
. uniqid(),
type
=> DYNAMIC_EDUCATION
});
my
$operation
=
Google::Ads::GoogleAds::V16::Services::AssetSetService::AssetSetOperation->
new({
create
=>
$asset_set
});
my
$response
=
$api_client
->AssetSetService()->mutate({
customerId
=>
$customer_id
,
operations
=> [
$operation
]});
my
$resource_name
=
$response
->{results}[0]{resourceName};
printf
"Created asset set with resource name '%s'.\n"
,
$resource_name
;
return
$resource_name
;
}
sub
add_assets_to_asset_set {
my
(
$api_client
,
$customer_id
,
$asset_resource_name
,
$asset_set_resource_name
)
=
@_
;
my
$asset_set_asset
=
Google::Ads::GoogleAds::V16::Resources::AssetSetAsset->new({
asset
=>
$asset_resource_name
,
assetSet
=>
$asset_set_resource_name
});
my
$operation
=
Google::Ads::GoogleAds::V16::Services::AssetSetAssetService::AssetSetAssetOperation
->new({
create
=>
$asset_set_asset
});
my
$response
=
$api_client
->AssetSetAssetService()->mutate({
customerId
=>
$customer_id
,
operations
=> [
$operation
]});
my
$resource_name
=
$response
->{results}[0]{resourceName};
printf
"Created AssetSetAsset link with resource name '%s'.\n"
,
$resource_name
;
}
sub
link_asset_set_to_campaign {
my
(
$api_client
,
$customer_id
,
$campaign_id
,
$asset_set_resource_name
) =
@_
;
my
$campaign_asset_set
=
Google::Ads::GoogleAds::V16::Resources::CampaignAssetSet->new({
campaign
=> Google::Ads::GoogleAds::V16::Utils::ResourceNames::campaign(
$customer_id
,
$campaign_id
),
assetSet
=>
$asset_set_resource_name
});
my
$operation
=
Google::Ads::GoogleAds::V16::Services::CampaignAssetSetService::CampaignAssetSetOperation
->new({
create
=>
$campaign_asset_set
});
my
$response
=
$api_client
->CampaignAssetSetService()->mutate({
customerId
=>
$customer_id
,
operations
=> [
$operation
]});
my
$resource_name
=
$response
->{results}[0]{resourceName};
printf
"Created a CampaignAssetSet with resource name '%s'.\n"
,
$resource_name
;
}
if
(abs_path($0) ne abs_path(__FILE__)) {
return
1;
}
my
$api_client
= Google::Ads::GoogleAds::Client->new();
$api_client
->set_die_on_faults(1);
GetOptions(
"customer_id=s"
=> \
$customer_id
,
"campaign_id=i"
=> \
$campaign_id
);
pod2usage(2)
if
not check_params(
$customer_id
,
$campaign_id
);
add_dynamic_remarketing_asset(
$api_client
,
$customer_id
=~ s/-//gr,
$campaign_id
);