Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function main() {
- var domain = 'https://test-google.alfalytics.net';
- // get current account
- var currentAccount = AdWordsApp.currentAccount();
- // definition of start and end date to get report
- var startDate = getStartDate(domain, currentAccount.getCustomerId());
- var endDate = new Date();
- if (!startDate) {
- startDate = new Date();
- startDate.setMonth(startDate.getMonth() - 2);
- } else {
- startDate = new Date(startDate.replace(' ', 'T'));
- }
- while ((endDate - startDate) > 0) {
- var dateRange = String(startDate.getFullYear()) +
- String(startDate.getMonth() + 1).replace(/^(.)$/, '0$1') +
- String(startDate.getDate()).replace(/^(.)$/, '0$1');
- prepareAndSendAds(currentAccount, domain, dateRange, startDate);
- Logger.log('Done');
- startDate.setDate(startDate.getDate() + 1);
- }
- }
- function getStartDate(domain, customerId) {
- var url = domain + '/api/1.0/ga-accounts?billingId=' + customerId;
- var options = {
- 'method': 'GET',
- 'muteHttpExceptions': true
- };
- var lastGaAccountReport = JSON.parse(UrlFetchApp.fetch(url, options));
- if (!lastGaAccountReport.rows[0] || !lastGaAccountReport.rows[0].GaAccountReports[0])
- return;
- return lastGaAccountReport.rows[0].GaAccountReports[0].lastReportDate;
- }
- function prepareAndSendAds(currentAccount, domain, dateRange, startDate) {
- var report = AdsApp.report("SELECT CampaignName, CampaignId, " +
- "CampaignStatus, AdGroupName, AdGroupId, " +
- "AdGroupStatus, Id, Status, Cost, " +
- "Clicks, Impressions, ConversionValue, UniversalAppAdYouTubeVideos " +
- "FROM AD_PERFORMANCE_REPORT " +
- "WHERE Impressions > 50 " +
- "DURING " + dateRange + ',' + dateRange);
- var ads = [];
- var rows = report.rows();
- Logger.log(dateRange);
- while (rows.hasNext()) {
- var row = rows.next();
- var conversions = JSON.stringify(prepareAndSendConversions(currentAccount, domain, dateRange, row['Id']));
- var payload = { "accountName": currentAccount.getName(),
- "accountId": currentAccount.getCustomerId(),
- "campaignName": row['CampaignName'],
- "campaignId": row['CampaignId'],
- "adGroupName": row['AdGroupName'],
- "adGroupId": row['AdGroupId'],
- "status": row['Status'],
- "adId": row['Id'],
- "cost": row['Cost'],
- "clicks": row['Clicks'],
- "impressions": row['Impressions'],
- "conversionValue": row['ConversionValue'],
- "universalAppAdYouTubeVideos": row['UniversalAppAdYouTubeVideos'],
- "reportDate": startDate,
- "conversions": conversions
- };
- var url = domain + '/api/1.0/ga-ad';
- var options = {
- 'method': 'POST',
- 'payload': payload,
- 'muteHttpExceptions': true
- };
- UrlFetchApp.fetch(url,options);
- }
- }
- function prepareAndSendConversions(currentAccount, domain, dateRange, adId) {
- // getting ad conversions report
- var report = AdsApp.report("SELECT Id, ConversionCategoryName, " +
- "ConversionTypeName, ConversionTrackerId " +
- "FROM AD_PERFORMANCE_REPORT " +
- "WHERE Id = " + adId + " " +
- "DURING " + dateRange + "," + dateRange);
- var conversions = [];
- rows = report.rows();
- while (rows.hasNext()) {
- row = rows.next();
- conversions.push({
- "adId": row['Id'],
- "name": row['ConversionCategoryName'],
- "conversionTypeName": row['ConversionTypeName'],
- "conversionTrackerId": row['ConversionTrackerId']
- });
- };
- return conversions;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement