function main() { /** * Google Drive spreadsheet url * * @type {string} */ var spreadsheetUrl = "[URL spreadsheet]"; /** * Supported values: * TODAY, YESTERDAY, LAST_7_DAYS, THIS_WEEK_SUN_TODAY, * LAST_WEEK, LAST_14_DAYS, LAST_30_DAYS, LAST_BUSINESS_WEEK, * LAST_WEEK_SUN_SAT, THIS_MONTH, LAST_MONTH, ALL_TIME * * @type {string} */ var dateRange = 'LAST_30_DAYS'; /** * * @type {Sheet} */ var qualityScoreSheet = SpreadsheetApp.openByUrl(spreadsheetUrl).getActiveSheet(); /** * * @type {Date} */ var date = new Date(); /** * * @type {AdWordsApp.CampaignSelector} */ var campaigns = AdWordsApp.campaigns() .withCondition("Status='ENABLED'") .get(); while (campaigns.hasNext()) { /** * * @type {AdWordsApp.Campaign} */ var campaign = campaigns.next(); /** * * @type {number} */ var campaignImpressions = 0; /** * * @type {number} */ var qualityScore = 0; /** * * @type {AdWordsApp.KeywordSelector} */ var keywords = campaign.keywords() .withCondition("AdGroupStatus = 'ENABLED'") .withCondition("Status = 'ENABLED'") .forDateRange(dateRange) .get(); while (keywords.hasNext()) { /** * * @type {AdWordsApp.Keyword} */ var keyword = keywords.next(); /** * * @type {AdWordsApp.Stats} */ var stats = keyword.getStatsFor(dateRange); /** * Add quality score * impressions to total campaign quality score */ qualityScore = qualityScore + keyword.getQualityScore() * stats.getImpressions(); /** * Sum all impressions for this campaign */ campaignImpressions = campaignImpressions + stats.getImpressions(); } /** * Calculate the average quality score * * @type {number} */ var qualityscoreForCampaign = qualityScore / campaignImpressions; /** * Add a new row to the spreadsheet with the quality scode */ qualityScoreSheet.appendRow([date, qualityscoreForCampaign, campaign.getName()]); } }