controller.js
var PythonShell = require('python-shell'); PythonShell.defaultOptions = { scriptPath: './server/python/' }; exports.adwords = { handler: function(request, reply){ PythonShell.run('script.py', function (err, res) { if (err) throw err; reply(res); }); });
script.py
import os
import sys, json
import csv
from googleads import adwords
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
def main(client):
report_downloader = client.GetReportDownloader(version='v201609')
report = {
'reportName': 'LAST_7_DAYS AD_PERFORMANCE_REPORT',
'dateRangeType': 'LAST_7_DAYS',
'reportType': 'AD_PERFORMANCE_REPORT',
'downloadFormat': 'CSV',
'selector': {
'fields': ['CallOnlyPhoneNumber', 'Cost']
}
}
file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),"report.csv")
f = open(file_path,'wb')
f.write(report_downloader.DownloadReportAsString(report, skip_report_summary=True))
f.close()
with open(file_path, 'rb') as f:
f.next()
reader = csv.DictReader(f)
data = dict()
for row in reader:
number = row['Call-only ad phone number'].replace("-", "")
number = number.strip()
if number:
if number in data:
data[number] += int(row['Cost'])
else:
data[number] = int(row['Cost'])
print data
f.close()
if __name__ == '__main__':
adwords_client = adwords.AdWordsClient.LoadFromStorage()
adwords_client.SetClientCustomerId('111-111-1111')
main(adwords_client)