UNPKG

node-google-dfp

Version:

Google DFP API Helper Library for NodeJS

98 lines (74 loc) 2.54 kB
// run a report on line item #1234567 var Dfp = require('node-google-dfp'); var dfpConfig = require('./dfpCredentials'); var dfpUser = new Dfp.User(dfpConfig.networkCode, dfpConfig.applicationName); dfpUser.setSettings(dfpConfig); dfpUser.getService('ReportService', function (err, reportService) { if (err) { return console.error(err); } var results = null; var args = { reportJob: { reportQuery: { dimensions: ['DATE'], columns: [ 'AD_SERVER_CLICKS', 'AD_SERVER_IMPRESSIONS' ], dimensionAttributes : [], startDate: { year: 2014, month: 5, day: 22 }, endDate: { year: 2014, month: 6, day: 21 }, dimensionFilters : [], statement: { query : 'WHERE LINE_ITEM_ID = 123456789'} } } }; function download_report(download_url, local_filename) { var https = require('https'); var fs = require('fs'); var zlib = require('zlib'); var file = fs.createWriteStream(local_filename); https.get(download_url, function (response) { response.pipe(zlib.createGunzip()).pipe(file); }); } function check_report_ready() { var reportId = results.rval.id; console.log('Trying to get report #' + reportId); reportService.getReportJobStatus({reportJobId : reportId}, function (err, data) { if (err) { return console.log('ERROR', err); } console.log('Report Job #' + reportId + ' returned ' + data.rval); if (data.rval === 'COMPLETED') { var download_args = { reportJobId : reportId, reportDownloadOptions : { exportFormat : 'CSV_EXCEL', includeReportProperties : false, includeTotalsRow : false, useGzipCompression : true } }; reportService.getReportDownloadUrlWithOptions(download_args, function (err, data) { if (err) { return console.log('ERROR', err.body); } console.log("Downloading report from " + data.rval); download_report(data.rval, 'downloaded_report.csv'); }); } if (data.rval === 'FAILED') { console.log('Report Failed!'); } if (data.rval === 'IN_PROGRESS') { setTimeout(check_report_ready, 100); } }); } reportService.runReportJob(args, function (err, jobStatus) { if (err) { return console.log('ERROR', err.body); } results = jobStatus; setTimeout(check_report_ready, 100); }); });