Created
April 10, 2020 17:50
-
-
Save limata3/d16dcbb0ef3ccc07034f2317a31f56c4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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