function getTopImprPct(keyword) {
return getKeywordPerformance(keyword.getId(), 'TopImpressionPercentage');
}
function getAbsTopImprPct(keyword) {
return getKeywordPerformance(keyword.getId(), 'AbsoluteTopImpressionPercentage');
}
function getKeywordPerformance(keywordId, metric) {
if (!keywordPerformanceLookup) { buildKeywordPerformanceLookup(); }
if (keywordPerformanceLookup[keywordId] && keywordPerformanceLookup[keywordId][metric]) {
return keywordPerformanceLookup[keywordId][metric];
}
else {
Logger.log('Lookup miss for metric %s on keyword %s', metric, keywordId);
return 0.0;
}
}
var keywordPerformanceLookup = null;
function buildKeywordPerformanceLookup() {
keywordPerformanceLookup = {};
var keywordPerformanceReportRows = AdsApp.report(
'SELECT Id, Criteria, AbsoluteTopImpressionPercentage, TopImpressionPercentage ' +
'FROM KEYWORDS_PERFORMANCE_REPORT ' +
'WHERE CampaignStatus = ENABLED ' +
'AND AdGroupStatus = ENABLED ' +
'AND Status = ENABLED ' +
'AND IsNegative = FALSE ' +
'AND Impressions > 0 ' +
'DURING TODAY').rows();
while(keywordPerformanceReportRows.hasNext()) {
var row = keywordPerformanceReportRows.next();
keywordPerformanceLookup[row['Id']] = {
TopImpressionPercentage: row['TopImpressionPercentage'],
AbsoluteTopImpressionPercentage: row['AbsoluteTopImpressionPercentage']
};
}
}