Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function main() {
  2.   var domain = 'https://test-google.alfalytics.net';
  3.   // get current account
  4.   var currentAccount = AdWordsApp.currentAccount();
  5.   // definition of start and end date to get report
  6.   var startDate = getStartDate(domain, currentAccount.getCustomerId());
  7.   var endDate = new Date();
  8.   if (!startDate) {
  9.     startDate = new Date();
  10.     startDate.setMonth(startDate.getMonth() - 2);
  11.   } else {
  12.     startDate = new Date(startDate.replace(' ', 'T'));
  13.   }
  14.   while ((endDate - startDate) > 0) {
  15.     var dateRange = String(startDate.getFullYear()) +
  16.         String(startDate.getMonth() + 1).replace(/^(.)$/, '0$1') +
  17.         String(startDate.getDate()).replace(/^(.)$/, '0$1');
  18.     prepareAndSendAds(currentAccount, domain, dateRange, startDate);
  19.     Logger.log('Done');
  20.     startDate.setDate(startDate.getDate() + 1);
  21.   }
  22. }
  23. function getStartDate(domain, customerId) {
  24.   var url = domain + '/api/1.0/ga-accounts?billingId=' + customerId;
  25.   var options = {
  26.     'method': 'GET',
  27.     'muteHttpExceptions': true
  28.   };
  29.   var lastGaAccountReport = JSON.parse(UrlFetchApp.fetch(url, options));
  30.   if (!lastGaAccountReport.rows[0] || !lastGaAccountReport.rows[0].GaAccountReports[0])
  31.     return;
  32.   return lastGaAccountReport.rows[0].GaAccountReports[0].lastReportDate;
  33. }
  34. function prepareAndSendAds(currentAccount, domain, dateRange, startDate) {
  35.   var report = AdsApp.report("SELECT CampaignName, CampaignId, " +
  36.                              "CampaignStatus, AdGroupName, AdGroupId, " +
  37.                              "AdGroupStatus, Id, Status, Cost, " +
  38.                              "Clicks, Impressions, ConversionValue, UniversalAppAdYouTubeVideos " +
  39.                              "FROM AD_PERFORMANCE_REPORT " +
  40.                              "WHERE Impressions > 50 " +
  41.                              "DURING " + dateRange + ',' + dateRange);
  42.   var ads = [];
  43.   var rows = report.rows();
  44.   Logger.log(dateRange);
  45.   while (rows.hasNext()) {
  46.     var row = rows.next();
  47.     var conversions = JSON.stringify(prepareAndSendConversions(currentAccount, domain, dateRange, row['Id']));
  48.     var payload = { "accountName": currentAccount.getName(),
  49.             "accountId": currentAccount.getCustomerId(),
  50.             "campaignName": row['CampaignName'],
  51.             "campaignId": row['CampaignId'],
  52.             "adGroupName": row['AdGroupName'],
  53.             "adGroupId": row['AdGroupId'],
  54.             "status": row['Status'],
  55.             "adId": row['Id'],
  56.             "cost": row['Cost'],
  57.             "clicks": row['Clicks'],
  58.             "impressions": row['Impressions'],
  59.             "conversionValue": row['ConversionValue'],
  60.             "universalAppAdYouTubeVideos": row['UniversalAppAdYouTubeVideos'],
  61.             "reportDate": startDate,
  62.             "conversions": conversions
  63.     };
  64.     var url = domain + '/api/1.0/ga-ad';
  65.     var options = {
  66.       'method': 'POST',
  67.       'payload': payload,
  68.       'muteHttpExceptions': true
  69.     };
  70.     UrlFetchApp.fetch(url,options);
  71.   }
  72. }
  73. function prepareAndSendConversions(currentAccount, domain, dateRange, adId) {  
  74.   // getting ad conversions report
  75.   var report = AdsApp.report("SELECT Id, ConversionCategoryName, " +
  76.                             "ConversionTypeName, ConversionTrackerId " +
  77.                             "FROM AD_PERFORMANCE_REPORT " +
  78.                             "WHERE Id = " + adId + " " +
  79.                             "DURING " + dateRange + "," + dateRange);
  80.   var conversions = [];
  81.   rows = report.rows();
  82.   while (rows.hasNext()) {
  83.          row = rows.next();
  84.          conversions.push({
  85.            "adId": row['Id'],
  86.            "name": row['ConversionCategoryName'],
  87.            "conversionTypeName": row['ConversionTypeName'],
  88.            "conversionTrackerId": row['ConversionTrackerId']
  89.          });
  90.   };
  91.   return conversions;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement