Skip to content

Instantly share code, notes, and snippets.

@BradRuderman
Created March 8, 2015 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BradRuderman/81fc37a16a9f8a9d45d1 to your computer and use it in GitHub Desktop.
Save BradRuderman/81fc37a16a9f8a9d45d1 to your computer and use it in GitHub Desktop.
Adwords Error
from googleads import adwords
from googleads import oauth2
import logging
import sys
import psycopg2
import datetime
import csv
logging.basicConfig(level=logging.ERROR)
logging.getLogger('suds.transport').setLevel(logging.ERROR)
# OAuth 2.0 credential information. In a real application, you'd probably be
# pulling these values from a credential storage.
SERVICE_ACCOUNT_EMAIL = '{STRIPPED_DATA}'
KEY_FILE = 'adwords.pem'
SERVICE_ACCOUNT_USER = '{STRIPPED_DATA}'
# AdWords API information.
DEVELOPER_TOKEN = '{STRIPPED_DATA}'
USER_AGENT = '{STRIPPED_DATA}'
CLIENT_CUSTOMER_ID = '{STRIPPED_DATA}'
oauth2_client = oauth2.GoogleServiceAccountClient(oauth2.GetAPIScope('adwords'), SERVICE_ACCOUNT_EMAIL, KEY_FILE,sub=SERVICE_ACCOUNT_USER)
adwords_client = adwords.AdWordsClient(DEVELOPER_TOKEN, oauth2_client, USER_AGENT, CLIENT_CUSTOMER_ID)
report_downloader = adwords_client.GetReportDownloader(version='v201502')
report_dt = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y%m%d')
#customer = adwords_client.GetService('CustomerService').get()
#print 'You are logged in as customer: %s' % customer['customerId']
def clicks(report_dt):
print(report_dt)
report_query = ('''SELECT AdFormat,
AdGroupId,
AdNetworkType1,
AdNetworkType2,
CampaignId,
CityCriteriaId,
ClickType,
CountryCriteriaId,
CreativeId,
CriteriaId,
CriteriaParameters,
Date,
Device,
GclId,
MetroCriteriaId,
MonthOfYear,
Page,
RegionCriteriaId,
Slot
FROM CLICK_PERFORMANCE_REPORT
DURING {0},{0}''').format(report_dt)
data = report_downloader.DownloadReportAsStringWithAwql(report_query, 'CSV', skip_report_header=True, skip_report_summary=True).strip("\n").split("\n")
headers = data.pop(0)
def performance(report_dt):
# Create report query.
report_query = ('''SELECT Id,
AccountCurrencyCode,
AccountDescriptiveName,
AccountTimeZoneId,
AdGroupAdDisapprovalReasons,
AdGroupId,
AdGroupName,
AdGroupStatus,
AdType,
AverageCpc,
AverageCpm,
CampaignId,
CampaignName,
CampaignStatus,
Clicks,
ConvertedClicks,
Cost,
CostPerConvertedClick,
CreativeApprovalStatus,
CreativeDestinationUrl,
CreativeUrlCustomParameters,
Ctr,
CustomerDescriptiveName,
Date,
DayOfWeek,
Description1,
Description2,
DisplayUrl,
ExternalCustomerId,
Headline,
Impressions,
Month,
MonthOfYear,
PrimaryCompanyName,
Quarter,
SharedSetName,
Status,
CreativeDestinationUrl,
Week,
Year
FROM AD_PERFORMANCE_REPORT
WHERE Impressions > 0
DURING {0},{0}''').format(report_dt)
data = report_downloader.DownloadReportAsStringWithAwql(report_query, 'CSV', skip_report_header=True, skip_report_summary=True).strip("\n").split("\n")
headers = data.pop(0)
if __name__ == "__main__":
report_dt = (datetime.datetime.now() - datetime.timedelta(days=1))
r_dt = report_dt.strftime('%Y%m%d')
clicks(r_dt)
performance(r_dt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment