function outputQualityScoreData(sheet) {
// Output header row
var header = [
'Quality Score',
'Num Keywords',
'Impressions',
'Clicks',
'CTR (%)',
'Cost',
'Converted Clicks',
'Click Conversion Rate',
'Cost per Converted Click'
];
sheet.getRange(3, 2, 1, 6).setValues([header]);
// Initialize
var qualityScoreMap = [];
for (i = 1; i <= 10; i++) {
qualityScoreMap[i] = {
numKeywords: 0,
totalImpressions: 0,
totalClicks: 0,
totalCost: 0.0,
totalConvertedClicks: 0,
};
}
// Compute data
var keywordIterator = AdWordsApp.keywords()
.forDateRange('LAST_WEEK')
.withCondition('Impressions > 0')
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
var stats = keyword.getStatsFor('LAST_WEEK');
var data = qualityScoreMap[keyword.getQualityScore()];
if (data) {
data.numKeywords++;
data.totalImpressions += stats.getImpressions();
data.totalClicks += stats.getClicks();
data.totalCost += stats.getCost();
data.totalConvertedClicks += stats.getConvertedClicks();
}
}
// Output data to spreadsheet
var rows = [];
for (var key in qualityScoreMap) {
var ctr = 0;
var cost = 0.0;
var clickConversionRate = 0.0;
var costPerConvertedClick = 0.0;
if (qualityScoreMap[key].numKeywords > 0) {
ctr = (qualityScoreMap[key].totalClicks /
qualityScoreMap[key].totalImpressions) * 100;
if (qualityScoreMap[key].totalClicks > 0) {
clickConversionRate = (qualityScoreMap[key].totalConvertedClicks /
qualityScoreMap[key].totalClicks) * 100;
}
if (qualityScoreMap[key].totalConvertedClicks > 0) {
costPerConvertedClick = qualityScoreMap[key].totalCost /
qualityScoreMap[key].totalConvertedClicks;
}
}
var row = [
key,
qualityScoreMap[key].numKeywords,
qualityScoreMap[key].totalImpressions,
qualityScoreMap[key].totalClicks,
ctr.toFixed(2),
qualityScoreMap[key].totalCost,
qualityScoreMap[key].totalConvertedClicks,
clickConversionRate,
costPerConvertedClick
];
rows.push(row);
}
sheet.getRange(4, 2, rows.length, 6).setValues(rows);
}