Forked from limata3/compare-original-and-draft-ad_groups-target_cpas-adwords-API.py
Created
February 1, 2021 19:40
-
-
Save Sandy4321/808f44406dff3aa0dc578b30d79d9329 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