Report on Description Lines Instead Of Headline ( how to change this script)

148 views
Skip to first unread message

Jez Rourke-Pilott

unread,
Mar 13, 2014, 1:40:35 PM3/13/14
to adwords...@googlegroups.com
I have this script that reports on headlines , i want to change it say it reports on description line 1 and description line 2 is it possible .

the script is here  https://developers.google.com/adwords/scripts/docs/solutions/ad-performance


// Comma-separated list of recipients. Comment out to not send any emails.
var RECIPIENT_EMAIL = 'em...@example.com';

// URL of the default spreadsheet template
var SPREADSHEET_URL = "http://goo.gl/x0GDu0";

/**
 * This script computes an Ad performance report
 * and outputs it to a Google spreadsheet
 */

function main() {
 
var spreadsheet = copySpreadsheet(SPREADSHEET_URL);
 
var headlineSheet = spreadsheet.getSheetByName('Headline');
  headlineSheet
.getRange(1, 2, 1, 1).setValue("Date");
  headlineSheet
.getRange(1, 3, 1, 1).setValue(new Date());
 
var destinationUrlSheet = spreadsheet.getSheetByName('Destination Url');
  destinationUrlSheet
.getRange(1, 2, 1, 1).setValue("Date");
  destinationUrlSheet
.getRange(1, 3, 1, 1).setValue(new Date());
  spreadsheet
.getRangeByName("account_id_headline").setValue(AdWordsApp.currentAccount().getCustomerId());
  spreadsheet
.getRangeByName("account_id_destination_url").setValue(AdWordsApp.currentAccount().getCustomerId());
 
  outputSegmentation
(headlineSheet, 'Headline', function(ad) {
   
return ad.getHeadline();
 
});
  outputSegmentation
(destinationUrlSheet, 'Destination Url', function(ad) {
   
return ad.getDestinationUrl();
 
});
 
Logger.log('Ad performance report available at\n' + spreadsheet.getUrl());
 
if (RECIPIENT_EMAIL) {
   
MailApp.sendEmail(RECIPIENT_EMAIL,
     
'Ad Performance Report is ready',
      spreadsheet
.getUrl());
 
}
}

/**
 * Retrieves the spreadsheet identified by the URL.
 * @param {string} spreadsheetUrl The URL of the spreadsheet.
 * @return {SpreadSheet} The spreadsheet.
 */

function copySpreadsheet(spreadsheetUrl) {
 
return SpreadsheetApp.openByUrl(spreadsheetUrl).copy('Ad Performance Report ' + new Date());
}

/**
 * Generates statistical data for this segment.
 * @param {Sheet} sheet Sheet to write to.
 * @param {string} segmentName The Name of this segment for the header row.
 * @param {function(AdWordsApp.Ad): string} segmentFunc Function that returns
 *        a string used to segment the results by.
 */

function outputSegmentation(sheet, segmentName, segmentFunc) {
 
// Output header row
 
var rows = [];
 
var header = [
    segmentName
,
   
'Num Ads',
   
'Impressions',
   
'Clicks',
   
'CTR (%)',
   
'Cost'
 
];
  rows
.push(header);

 
var segmentMap = {};

 
// Compute data
 
var adIterator = AdWordsApp.ads()
     
.forDateRange('LAST_WEEK')
     
.withCondition('Impressions > 0').get();
 
while (adIterator.hasNext()) {
   
var ad = adIterator.next();
   
var stats = ad.getStatsFor('LAST_WEEK');
   
var segment = segmentFunc(ad);
   
if (!segmentMap[segment]) {
      segmentMap
[segment] = {
        numAds
: 0,
        totalImpressions
: 0,
        totalClicks
: 0,
        totalCost
: 0.0
     
};
   
}
   
var data = segmentMap[segment];
    data
.numAds++;
    data
.totalImpressions += stats.getImpressions();
    data
.totalClicks += stats.getClicks();
    data
.totalCost += stats.getCost();
 
}

 
// Write data to our rows.
 
for (var key in segmentMap) {
   
if (segmentMap.hasOwnProperty(key)) {
     
var ctr = 0;
     
if (segmentMap[key].numAds > 0) {
        ctr
= (segmentMap[key].totalClicks /
          segmentMap
[key].totalImpressions) * 100;
     
}
     
var row = [
        key
,
        segmentMap
[key].numAds,
        segmentMap
[key].totalImpressions,
        segmentMap
[key].totalClicks,
        ctr
.toFixed(2),
        segmentMap
[key].totalCost];
      rows
.push(row);
   
}
 
}
  sheet
.getRange(3, 2, rows.length, 6).setValues(rows);
}

Jez Rourke-Pilott

unread,
Mar 17, 2014, 12:51:46 PM3/17/14
to adwords...@googlegroups.com
Can anyone help me with this , will it be possible as i think it would be very powerful ?

Anash Oommen

unread,
Mar 19, 2014, 1:16:17 PM3/19/14
to adwords...@googlegroups.com
Hi Jez,

Look for the lines that say

outputSegmentation(headlineSheet, 'Headline', function(ad) {
  return ad.getHeadline();
});
outputSegmentation(destinationUrlSheet, 'Destination Url', function(ad) {
  return ad.getDestinationUrl();
});

and modify it to read 

outputSegmentation(headlineSheet, 'Description 1', function(ad) {
  return ad.getDescription1();
});
outputSegmentation(destinationUrlSheet, 'Description 2', function(ad) {
  return ad.getDescription2();
});

Cheers,
Anash P. Oommen,
AdWords Scripts Team

Jez Rourke-Pilott

unread,
Mar 19, 2014, 1:38:01 PM3/19/14
to adwords...@googlegroups.com
Brilliant it works , but how do i change the sheet tab names to reflect the correct data i.e the Headline sheet should be renamed Description 1 etc ??



On Thursday, March 13, 2014 5:40:35 PM UTC, Jez Rourke-Pilott wrote:

Anash Oommen

unread,
Mar 19, 2014, 2:33:26 PM3/19/14
to adwords...@googlegroups.com
Hi Jez,

Rename the first two sheets on the google spreadsheet to "Description 1" and "Description 2" respectively. Then replace these lines

var headlineSheet = spreadsheet.getSheetByName('Description 1');
...

var destinationUrlSheet = spreadsheet.getSheetByName('Description 2');

with

var headlineSheet = spreadsheet.getSheetByName('Headline');
...

var destinationUrlSheet = spreadsheet.getSheetByName('Destination Url');

Cheers,
Anash
Reply all
Reply to author
Forward
0 new messages