Snippets
Created by
Frederick Vallaeys
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | var map = new Array();
function main() {
runReportForAdGroups(map);
runReportForExtensions(map);
reportResults(map);
}
function reportResults(map) {
var sheet = SpreadsheetApp.create("ad groups with sitelink impressions");
var sheet1 = sheet.getActiveSheet();
var rowData = new Array("Campaign Name", "Ad Group Name", "Impressions With Site Links", "Total Impressions", "Percentage");
sheet1.appendRow(rowData);
for(var id in map) {
var item = map[id];
var campaignName = item.campaignName;
var adGroupName = item.adGroupName;
var totalImpressions = item.totalImpressions;
var impressionsWithSiteLinks = item.impressionsWithSiteLinks;
var percentage = impressionsWithSiteLinks / totalImpressions*100;
Logger.log(adGroupName + " (" + id + '): imp with sitelinks:' + percentage.toFixed(0) + "% (" + impressionsWithSiteLinks + " out of " + totalImpressions + ")");
var rowData = new Array(campaignName, adGroupName, impressionsWithSiteLinks, totalImpressions, percentage);
sheet1.appendRow(rowData);
sheet1.setFrozenRows(1);
sheet1.sort(5);
}
}
function runReportForExtensions(adMap) {
// AdWords reports return data faster than campaign management methods
// and can be used to retrieve basic structural information on
// your Account, Campaigns, AdGroups, Ads, Keywords, etc. You can refer to
// https://developers.google.com/adwords/api/docs/guides/structure-reports
// for more details.
// See https://developers.google.com/adwords/api/docs/appendix/reports
// for all the supported report types.
// See https://developers.google.com/adwords/api/docs/guides/awql for
// details on how to use AWQL.
// See https://developers.google.com/adwords/api/docs/guides/uireports
// for details on how to map an AdWords UI feature to the corresponding
// reporting API feature.
// ExtensionPlaceholderCreativeId
var report = AdWordsApp.report(
'SELECT AdGroupId, AdGroupName, CampaignName, Impressions, ExtensionPlaceholderType ' +
'FROM PLACEHOLDER_REPORT ' +
'WHERE ExtensionPlaceholderType = 1 ' +
'AND AdGroupStatus = ENABLED ' +
'AND CampaignStatus = ENABLED '+
'DURING LAST_30_DAYS');
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var adGroupId = row['AdGroupId'];
var campaignName = row['CampaignName'];
var adGroupName = row['AdGroupName'];
var impressions = row['Impressions'];
var type = row['ExtensionPlaceholderType'];
if(!map[adGroupId]) {
map[adGroupId] = new Object();
map[adGroupId].adGroupName = adGroupName;
map[adGroupId].campaignName = campaignName;
Logger.log("This should not happen because there can't be sitelink impressions without impressions");
} else {
//Logger.log("This should not happen");
}
map[adGroupId].impressionsWithSiteLinks = impressions;
}
}
function runReportForAdGroups(map) {
var report = AdWordsApp.report(
'SELECT AdGroupId, Impressions, AdGroupName, CampaignName ' +
'FROM ADGROUP_PERFORMANCE_REPORT ' +
'WHERE AdGroupStatus = ENABLED ' +
'AND CampaignStatus = ENABLED ' +
'AND Impressions > 0 ' +
'DURING LAST_30_DAYS');
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var adGroupId = row['AdGroupId'];
var impressions = row['Impressions'];
var adGroupName = row['AdGroupName'];
var campaignName = row['CampaignName'];
if(!map[adGroupId]) {
map[adGroupId] = new Object();
map[adGroupId].campaignName = campaignName;
map[adGroupId].adGroupName = adGroupName;
map[adGroupId].impressionsWithSiteLinks = 0;
map[adGroupId].totalImpressions = 0;
}
map[adGroupId].totalImpressions = impressions;
}
}
|
Comments (0)
You can clone a snippet to your computer for local editing. Learn more.