Standard Shopping Keyword Automatic Exclusion SCript

111 views
Skip to first unread message

Mihai Ciurea

unread,
Mar 18, 2024, 1:16:10 PM3/18/24
to Google Ads Scripts Forum
Hello,

I'm quite new at creating scripts. I've attempted to create a script which would (if working properly) automatically exclude Search Terms which contain branded keywords from Standard Shopping Campaigns which have been labelled in Google Ads. Additionally, the script should take the keywords and export them inside a Google Spreadsheet for me to review.

After running into several errors, the script now runs (with no changes being made). Any tips on how to overcome this would be highly appreciated.

Below is the script, in its raw form.

function main() { // Replace with your Google Sheet URL var SPREADSHEET_URL = 'YOUR_SPREADSHEET_URL'; var NON_BRANDED_LABEL = 'NON_BRANDED'; var KEYWORDS = ['YOUR_BRAND_HERE']; var MIN_IMPRESSIONS = 1; var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL); var sheet = spreadsheet.getSheetByName('Sheet1') || spreadsheet.insertSheet(); sheet.clear(); sheet.appendRow(['Search Term', 'Clicks', 'Impressions', 'Clickthrough-rate', 'Cost']); var shoppingCampaignIterator = AdsApp.shoppingCampaigns() .withCondition('Status = ENABLED') .withCondition('AdvertisingChannelType = "SHOPPING"') .get(); while (shoppingCampaignIterator.hasNext()) { var shoppingCampaign = shoppingCampaignIterator.next(); var campaignHasLabel = shoppingCampaign.labels().withCondition('Name = "' + NON_BRANDED_LABEL + '"').get().hasNext(); if (campaignHasLabel) { var adGroupIterator = shoppingCampaign.adGroups().get(); while (adGroupIterator.hasNext()) { var adGroup = adGroupIterator.next(); var searchQueryPerformanceReport = AdsApp.report( 'SELECT Query, Impressions, Clicks, Ctr, Cost ' + 'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' + 'WHERE CampaignId = ' + shoppingCampaign.getId() + ' AND AdGroupId = ' + adGroup.getId() + ' AND Impressions >= ' + MIN_IMPRESSIONS + ' DURING LAST_30_DAYS' ); var rows = searchQueryPerformanceReport.rows(); while (rows.hasNext()) { var row = rows.next(); var query = row['Query'].toLowerCase(); var shouldExclude = true; for (var i = 0; i < KEYWORDS.length; i++) { if (query.indexOf(KEYWORDS[i]) !== -1) { shouldExclude = false; break; } } if (shouldExclude) { adGroup.createNegativeKeyword('[' + row['Query'] + ']'); sheet.appendRow([ row['Query'], row['Clicks'], row['Impressions'], row['Ctr'], row['Cost'] ]); } } } } } }




Many thanks!
Reply all
Reply to author
Forward
0 new messages