#!/usr/bin/perl -w
use
lib
"$Bin/../../lib"
;
use
Google::Ads::GoogleAds::V13::Services::GoogleAdsService::SearchGoogleAdsStreamRequest;
my
$customer_id
=
"INSERT_CUSTOMER_ID_HERE"
;
my
$campaign_id
=
"INSERT_CAMPAIGN_ID_HERE"
;
sub
get_campaign_criterion_bid_modifier_simulations {
my
(
$api_client
,
$customer_id
,
$campaign_id
) =
@_
;
my
$search_query
=
"SELECT campaign_criterion_simulation.criterion_id, "
.
"campaign_criterion_simulation.start_date, "
.
"campaign_criterion_simulation.end_date, "
.
"campaign_criterion_simulation.bid_modifier_point_list.points "
.
"FROM campaign_criterion_simulation "
.
"WHERE campaign_criterion_simulation.type = BID_MODIFIER "
.
"AND campaign_criterion_simulation.campaign_id = $campaign_id"
;
my
$search_stream_request
=
Google::Ads::GoogleAds::V13::Services::GoogleAdsService::SearchGoogleAdsStreamRequest
->new({
customerId
=>
$customer_id
,
query
=>
$search_query
});
my
$google_ads_service
=
$api_client
->GoogleAdsService();
my
$search_stream_handler
=
Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({
service
=>
$google_ads_service
,
request
=>
$search_stream_request
});
$search_stream_handler
->process_contents(
sub
{
my
$google_ads_row
=
shift
;
my
$simulation
=
$google_ads_row
->{campaignCriterionSimulation};
printf
"Found campaign-level criterion bid modifier simulation for "
.
"criterion with ID %d, start date '%s', end date '%s', and points:\n"
,
$simulation
->{criterionId},
$simulation
->{startDate},
$simulation
->{endDate};
foreach
my
$point
(@{
$simulation
->{bidModifierPointList}{points}}) {
printf
" bid modifier: %.2f => clicks: %d, cost: %d, impressions: %d, "
.
"parent clicks: %d, parent cost: %d, parent impressions: %d, "
.
"parent required budget: %d\n"
,
$point
->{bidModifier},
$point
->{clicks},
$point
->{costMicros},
$point
->{impressions},
$point
->{parentClicks},
$point
->{parentCostMicros},
$point
->{parentImpressions},
$point
->{parentRequiredBudgetMicros};
}
});
return
1;
}
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
);
get_campaign_criterion_bid_modifier_simulations(
$api_client
,
$customer_id
=~ s/-//gr,
$campaign_id
);