Hello,
I'm attempting to replicate the Targeted Locations view within the UI and
am working through the best way to replicate this. Currently, I'm
attempting to use the "Campaign Location Target Report" and using an AWQL
pull (below).
To get these results for all targeted locations across all campaigns, I'm
unsure as to if this is the best call to be making.
I've made a separate call that pulls every campaign ID and all of the
corresponding targeted location ID's and values.
That call was using the "CampaignCriterionService", but I was unable to
discern how to pull in metrics associated to the selectors.
Brand new to AdWords API and would appreciate any help/guidance. The docs
are a lot to take in when first starting out.
Both Using Python 3.7
*AWQL Report Call:*
****Anyone know how to push results to a DataFrame instead of exporting as
CSV?****
-- Provides a "Bad Request" error, Invalid Field Name --
def main(client):
report_downloader = client.GetReportDownloader(version='v201809')
report_query = (adwords.ReportQueryBuilder()
.Select('CampaignId','Id', 'Criteria','Date',
'Impressions', 'Clicks','Cost')
.From('CAMPAIGN_LOCATION_TARGET_REPORT')
.Where('CampaignStatus').In('ENABLED', 'PAUSED')
.During('LAST_7_DAYS')
.Build())
report_downloader.DownloadReportWithAwql(
report_query, 'CSV', PATH, skip_report_header=False,
skip_column_header=False, skip_report_summary=False)
*Campaign Criterion Call To Pull All Campaign ID's with targeted locations
and sending to DataFrame:*
**** was unable to figure out how to add date filtering or associated
metrics (spend, cost, clicks etc) in this type of call ****
def main(client):
count = 0
# Specifying which specific call, in this case it's campaign criterion.
campaign_criterion_service =
client.GetService('CampaignCriterionService', version='v201809')
# Construct selectors and filters.
offset = 0
selector = {
'fields': ['CampaignId', 'Id',
'CriteriaType',
#'PlatformName',
#'LanguageName',
'LocationName'
#'KeywordText'
],
'predicates': [{
'field': 'CriteriaType',
'operator': 'IN',
'values': [#'KEYWORD',
#'LANGUAGE',
'LOCATION'
#'PLATFORM'
]
# 'dateRange': 'LAST_MONTH'
}],
# 'dateRange': 'THIS_MONTH',
'paging': {
'startIndex': str(offset),
'numberResults': str(PAGE_SIZE)}}
more_pages = True
while more_pages:
page = campaign_criterion_service.get(selector)
# Printing Results HERE
if 'entries' in page:
for campaign_criterion in page['entries']:
criterion = campaign_criterion['criterion']
criteria = (criterion['locationName'] if 'locationName' in
criterion else None)
df.loc[count, 'Id'] = campaign_criterion["campaignId"]
df.loc[count, 'Location'] = criterion["type"]
df.loc[count, 'Location_Value'] = criteria
count += 1
print((campaign_criterion['campaignId'], criterion['type'],
criteria))
else:
print('No campaign targets were found.')
offset += PAGE_SIZE
selector['paging']['startIndex'] = str(offset)
more_pages = offset < int(page['totalNumEntries'])
# Formatting 5 digit zips w/ leading 0's
N = 5
df['Location_Value'] = df['Location_Value'].astype(str)
df['Location_Value'] = df['Location_Value'].str.zfill(N)
**
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
---
You received this message because you are subscribed to the Google Groups
"AdWords API and Google Ads API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/f4f4cdf6-2763-4235-b22e-41370e576d66%40googlegroups.com.