#!/usr/bin/perl -w
use
lib
"$Bin/../../lib"
;
qw(RESTATEMENT)
;
use
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::ConversionAdjustment;
use
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::GclidDateTimePair;
use
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::RestatementValue;
my
$customer_id
=
"INSERT_CUSTOMER_ID_HERE"
;
my
$conversion_action_id
=
"INSERT_CONVERSION_ACTION_ID_HERE"
;
my
$gclid
=
"INSERT_GCLID_HERE"
;
my
$adjustment_type
=
"INSERT_ADJUSTMENT_TYPE_HERE"
;
my
$conversion_date_time
=
"INSERT_CONVERSION_DATE_TIME_HERE"
;
my
$adjustment_date_time
=
"INSERT_ADJUSTMENT_DATE_TIME_HERE"
;
my
$restatement_value
=
undef
;
sub
upload_conversion_adjustment {
my
(
$api_client
,
$customer_id
,
$conversion_action_id
,
$gclid
,
$adjustment_type
,
$conversion_date_time
,
$adjustment_date_time
,
$restatement_value
)
=
@_
;
my
$conversion_adjustment
=
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::ConversionAdjustment
->new({
conversionAction
=>
Google::Ads::GoogleAds::V13::Utils::ResourceNames::conversion_action(
$customer_id
,
$conversion_action_id
),
adjustmentType
=>
$adjustment_type
,
gclidDateTimePair
=>
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::GclidDateTimePair
->new({
gclid
=>
$gclid
,
conversionDateTime
=>
$conversion_date_time
}
),
adjustmentDateTime
=>
$adjustment_date_time
,
});
$conversion_adjustment
->{restatementValue} =
Google::Ads::GoogleAds::V13::Services::ConversionAdjustmentUploadService::RestatementValue
->new({
adjustedValue
=>
$restatement_value
})
if
defined
$restatement_value
&&
$adjustment_type
eq RESTATEMENT;
my
$upload_conversion_adjustments_response
=
$api_client
->ConversionAdjustmentUploadService()
->upload_conversion_adjustments({
customerId
=>
$customer_id
,
conversionAdjustments
=> [
$conversion_adjustment
],
partialFailure
=>
"true"
});
if
(
$upload_conversion_adjustments_response
->{partialFailureError}) {
printf
"Partial error encountered: '%s'.\n"
,
$upload_conversion_adjustments_response
->{partialFailureError}{message};
}
my
$uploaded_conversion_adjustment
=
$upload_conversion_adjustments_response
->{results}[0];
if
(
%$uploaded_conversion_adjustment
) {
printf
"Uploaded conversion adjustment of the conversion action "
.
"with resource name '%s' for Google Click ID '%s'.\n"
,
$uploaded_conversion_adjustment
->{conversionAction},
$uploaded_conversion_adjustment
->{gclidDateTimePair}{gclid};
}
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
,
"conversion_action_id=i"
=> \
$conversion_action_id
,
"gclid=s"
=> \
$gclid
,
"adjustment_type=s"
=> \
$adjustment_type
,
"conversion_date_time=s"
=> \
$conversion_date_time
,
"adjustment_date_time=s"
=> \
$adjustment_date_time
,
"restatement_value=f"
=> \
$restatement_value
);
pod2usage(2)
if
not check_params(
$customer_id
,
$conversion_action_id
,
$gclid
,
$adjustment_type
,
$conversion_date_time
,
$adjustment_date_time
);
upload_conversion_adjustment(
$api_client
,
$customer_id
=~ s/-//gr,
$conversion_action_id
,
$gclid
,
$adjustment_type
,
$conversion_date_time
,
$adjustment_date_time
,
$restatement_value
);