Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save limata3/d16dcbb0ef3ccc07034f2317a31f56c4 to your computer and use it in GitHub Desktop.
Save limata3/d16dcbb0ef3ccc07034f2317a31f56c4 to your computer and use it in GitHub Desktop.
import pandas as pd
def get_all_ad_groups_from_campaign(campaign_id):
adwords_client = connect_to_adwords_api()
ad_group_service = adwords_client.GetService('AdGroupService', version='v201809')
selector = {
'fields': ['Id', 'Name', 'Status','TargetCpa'],
'paging': {
'startIndex': str(0),
'numberResults': str(9999)
},
'predicates': [{
'field': 'CampaignId',
'operator': 'IN',
'values': [campaign_id]
}]
}
response = ad_group_service.get(selector)
unstructured_ad_groups = response['entries'] if 'entries' in response else []
ad_groups = []
for x in range(len(unstructured_ad_groups)):
ad_group_name = unstructured_ad_groups[x].name
ad_group_id = unstructured_ad_groups[x].id
ad_group_target_cpa = float(unstructured_ad_groups[x].biddingStrategyConfiguration.bids[1].bid.microAmount) / 1000000
ad_group = [ad_group_name, ad_group_id, ad_group_target_cpa]
ad_groups.append(ad_group)
columns = ['ad_group_name', 'ad_group_id', 'target_cpa']
ad_groups = pd.DataFrame(data=ad_groups, columns=columns)
return ad_groups
def assess_ad_group_differences_in_drafts():
campaign_ids = pd.DataFrame(data={'campaign_id': [123, 567], 'test_campaign_id': [1234, 5678]})
# You need to replace the above campaign_ids in this example by those stored in your database or in a csv
original_ad_groups = pd.DataFrame(columns=['ad_group_name', 'ad_group_id', 'target_cpa'])
test_ad_groups = pd.DataFrame()
for campaign in campaign_ids['campaign_id']:
campaign_ad_groups = get_all_ad_groups_from_campaign(campaign_id=campaign)
original_ad_groups = original_ad_groups.append(campaign_ad_groups, ignore_index=True)
for campaign in campaign_ids['test_campaign_id']:
campaign_ad_groups = get_all_ad_groups_from_campaign(campaign_id=campaign)
test_ad_groups = test_ad_groups.append(campaign_ad_groups, ignore_index=True)
test_ad_groups.columns = ['ad_group_name', 'draft_ad_group_id', 'draft_target_cpa']
all_targets_comparison = pd.merge(original_ad_groups, test_ad_groups, how='left', on='ad_group_name')
all_targets_comparison['tcpa_comparison'] = all_targets_comparison['target_cpa'] == all_targets_comparison['draft_target_cpa']
ad_groups_not_matching = all_targets_comparison[all_targets_comparison['tcpa_comparison'] == False]
return ad_groups_not_matching
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment