def get_bidding_strategy(self, campaign_id):
service = self.client.GetService('CampaignService', version=self.version)
selector = {
'fields': ['Id', 'Name', 'BiddingStrategyId', 'EnhancedCpcEnabled',
'BiddingStrategyName', 'BiddingStrategyType', 'TargetRoas', 'TargetCpa'],
'predicates': [
{
'field': 'Status',
'operator': 'EQUALS',
'values': 'ENABLED'
},
{
'field': 'Id',
'operator': 'EQUALS',
'values': campaign_id
}
],
}
result = service.get(selector)
campaign = result['entries'][0]
try:
strategy_type = campaign['biddingStrategyConfiguration']['biddingStrategyType']
except:
strategy_type = 'None'
if strategy_type == 'TARGET_ROAS':
strategy_value = campaign['biddingStrategyConfiguration']['biddingScheme']['targetRoas']
elif strategy_type == 'TARGET_CPA':
strategy_value = campaign['biddingStrategyConfiguration']['biddingScheme']['targetCpa']['microAmount'] / 1000000
elif strategy_type == 'TARGET_OUTRANK_SHARE':
strategyId = campaign['biddingStrategyConfiguration']['biddingStrategyId']
service = self.client.GetService('BiddingStrategyService', version=self.version)
selector = {
'fields': ['Id', 'Name', 'BiddingScheme'],
'predicates': [
{
'field': 'Status',
'operator': 'EQUALS',
'values': 'ENABLED'
},
{
'field': 'Id',
'operator': 'EQUALS',
'values': strategyId
}
],
}
result_outrank = service.get(selector)
strategy_value = result_outrank['entries'][0]['biddingScheme']['targetOutrankShare'] / 1000000
elif strategy_type == 'MANUAL_CPC':
strategy_value = 'MANUAL_CPC'
else:
strategy_value = '-'
return strategy_type, strategy_value{
'id': any_campaign_id,
'campaignGroupId': None,
'name': any_name,
'status': 'ENABLED',
'servingStatus': None,
'startDate': None,
'endDate': None,
'budget': None,
'conversionOptimizerEligibility': None,
'adServingOptimizationStatus': None,
'frequencyCap': None,
'settings': [],
'advertisingChannelType': None,
'advertisingChannelSubType': None,
'networkSetting': None,
'labels': [],
'biddingStrategyConfiguration': {
'biddingStrategyId': any_strategy_id,
'biddingStrategyName': any_strategy_name',
'biddingStrategyType': 'TARGET_ROAS',
'biddingStrategySource': None,
'biddingScheme': None, # ---------------- THIS FIELD SHOULD NOT BE EMPTY! (TargetRoas would be here)
'bids': [],
'targetRoasOverride': None
},
'campaignTrialType': None,
'baseCampaignId': None,
'forwardCompatibilityMap': [],
'trackingUrlTemplate': None,
'finalUrlSuffix': None,
'urlCustomParameters': None,
'vanityPharma': None,
'universalAppCampaignInfo': None,
'selectiveOptimization': None
}