The form was successfully submitted
Thank you.
Some pages have been temporarily removed. Find out more
These instructions deal with how to eliminate high-risk websites and YouTube channels from your Google Ads campaigns. If you are using other ad networks as well, please consult your agency on how to proceed. We offer you an excellent script for Google Ads that not only excludes the websites but also regularly and automatically updates the list. If you do not wish to use our automated solution, please refer to manual exclusion instructions. Thank you for using our list.
1
Download this file which includes the list of websites and YouTube channels we do not recommend for advertising.
2
Log in to your Google Ads account and click on “Placement exclusion lists" in the “Tools & Settings” section.
3
Click on the blue rounded + button and choose "Upload a list".
4
Name the list, choose a source "Upload a file" and select downloaded file. Confirm the selection with button “Apply”.
5
After successful upload refresh the page and click on the list name to open it.
6
On the very end of list, click on the button “Apply to Campaigns”.
7
Select the campaigns where you want to add your placement exclusion list and click "Done“. (Note: Negative YouTube placements will apply only to video campaigns.)
The following script must be entered to Google Ads. If necessary, see the more detailed instructions below.
function main() { var spreadsheetURL = 'https://docs.google.com/spreadsheets/d/1Axn4wvJi9fa8BT6e70K-ZLcg8l9rpjXYOQboShQJlEM/edit?usp=sharing'; var sheet = SpreadsheetApp.openByUrl(spreadsheetURL).getSheets()[0]; var track = function(campaign_id) { // no sensitive data are pushed to 3rd party server // only md var sha = function(input_string) { // compute md5 of input string return Utilities.base64Encode( Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, input_string) ); } var customer_hash = sha(AdWordsApp.currentAccount().getCustomerId()); var track_url = 'http://konspiratori.sk/skript/v2/?c='+customer_hash; if(campaign_id){ var campaign_hash = sha(campaign_id); track_url += '&cc='+campaign_hash; } UrlFetchApp.fetch(track_url, {muteHttpExceptions: true}); } // track script run, no sensitive data collected track(); // name exclusion list var placementListName = 'KONSPIRATORI.sk'; var placements = []; var youtubePlacements = []; var row_index = 1; var youtube_row_index = 1; // Load URL placement exclusions while(true) { var range = sheet.getRange('A'+row_index+':A'+row_index).getValues(); if(range[0][0] == '') { break; } placements.push(range[0][0]); row_index++; } // Load YouTube placement exclusions while(true) { var range = sheet.getRange('B'+youtube_row_index+':B'+youtube_row_index).getValues(); if(range[0][0] == '') { break; } youtubePlacements.push(range[0][0]); youtube_row_index++; } Logger.log('Exclusion URLs loaded: ', placements); var sharedExcludedPlacementSelector = AdWordsApp.excludedPlacementLists().orderBy("SharedSetId DESC"); var sharedExcludedPlacementIterator = sharedExcludedPlacementSelector.get(); var placementList = null; while (sharedExcludedPlacementIterator.hasNext()) { var sharedExcludedPlacement = sharedExcludedPlacementIterator.next(); if(sharedExcludedPlacement.getName() == placementListName) { placementList = sharedExcludedPlacement; break; } } if(!placementList) { var placementListOperation = AdWordsApp.newExcludedPlacementListBuilder().withName(placementListName).build(); if(placementListOperation.isSuccessful()) { Logger.log('Placements list build success'); } var placementList = placementListOperation.getResult(); } placementList.addExcludedPlacements(placements); var sharedExcludedPlacementIterator = placementList.excludedPlacements().get(); while (sharedExcludedPlacementIterator.hasNext()) { var placement = sharedExcludedPlacementIterator.next(); Logger.log(placement.getUrl()); if(placements.indexOf(placement.getUrl()) == -1) { placement.remove(); } } // iterate over all available campaigns var campaignIterator = AdWordsApp.campaigns().get(); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); track(campaign.getId()); // just for statistics, no sensitive data collected campaign.addExcludedPlacementList(placementList); } // iterate over all video campaigns var videoCampaignIterator = AdWordsApp.videoCampaigns().get(); while (videoCampaignIterator.hasNext()) { var tmpExcludedChannels = youtubePlacements; var videoCampaign = videoCampaignIterator.next(); var excludedYoutubeChannelIterator = videoCampaign.videoTargeting().excludedYouTubeChannels().get(); while (excludedYoutubeChannelIterator.hasNext()) { var excludedYouTubeChannel = excludedYoutubeChannelIterator.next(); if (tmpExcludedChannels.indexOf(excludedYouTubeChannel.getChannelId()) !== -1) { delete tmpExcludedChannels[tmpExcludedChannels.indexOf(excludedYouTubeChannel.getChannelId())]; } } tmpExcludedChannels = tmpExcludedChannels.filter((item) => typeof item === 'string'); // Exclude all YouTube channels in batch from campaign for (i=0; i<tmpExcludedChannels.length; i++){ videoCampaign.videoTargeting().newYouTubeChannelBuilder().withChannelId(tmpExcludedChannels[i]).exclude(); } } }
1
Log in to your Google Ads account and click on “Scripts” in the “Tools & Settings” section.
2
Click on the blue rounded + button and then select "New script"
3
Name your script and copy and paste the above text into the text box. Authorize it by clicking the “Authorize” button.
4
The script needs rights to edit your campaigns, as it will automatically add a list of sites and YouTube channels to your campaigns.
5
Run the script without previewing. If needed, enable repeated script verification.
6
Remember to set the frequency at which the script should be running.
The following script must be entered to Google Ads. If necessary, you may find further instructions on how to enter a script in the Automatic exclusion section.
function main() { var spreadsheetURL = 'https://docs.google.com/spreadsheets/d/1Axn4wvJi9fa8BT6e70K-ZLcg8l9rpjXYOQboShQJlEM/edit?usp=sharing'; var sheet = SpreadsheetApp.openByUrl(spreadsheetURL).getSheets()[0]; var placements = []; var youtubePlacements = []; var row_index = 1; var youtube_row_index = 1; // Load URL placement exclusions while(true) { var range = sheet.getRange('A'+row_index+':A'+row_index).getValues(); if(range[0][0] == '') { break; } placements.push(range[0][0]); row_index++; } // Load YouTube placement exclusions while(true) { var range = sheet.getRange('B'+youtube_row_index+':B'+youtube_row_index).getValues(); if(range[0][0] == '') { break; } youtubePlacements.push(range[0][0]); youtube_row_index++; } Logger.log('Exclusion URLs loaded: '); Logger.log(placements); accountIterator = MccApp.accounts().get(); while(accountIterator.hasNext()) { MccApp.select(accountIterator.next()); processClientAccount(placements, youtubePlacements); } } function processClientAccount(placements, youtubePlacements) { Logger.log("Processing account: " + AdWordsApp.currentAccount().getName()); var track = function(campaign_id) { // no sensitive data are pushed to 3rd party server var sha = function(input_string) { // compute md5 of input string return Utilities.base64Encode( Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, input_string) ); } var customer_hash = sha(AdWordsApp.currentAccount().getCustomerId()); var track_url = 'http://konspiratori.sk/skript/v2/?c='+customer_hash; if(campaign_id){ var campaign_hash = sha(campaign_id); track_url += '&cc='+campaign_hash; } UrlFetchApp.fetch(track_url, {muteHttpExceptions: true}); } // track script run, no sensitive data collected track(); // name exclusion list var placementListName = 'KONSPIRATORI.sk'; var sharedExcludedPlacementSelector = AdWordsApp.excludedPlacementLists().orderBy("SharedSetId DESC"); var sharedExcludedPlacementIterator = sharedExcludedPlacementSelector.get(); var placementList = null; while (sharedExcludedPlacementIterator.hasNext()) { var sharedExcludedPlacement = sharedExcludedPlacementIterator.next(); if(sharedExcludedPlacement.getName() == placementListName) { placementList = sharedExcludedPlacement; break; } } if(!placementList) { var placementListOperation = AdWordsApp.newExcludedPlacementListBuilder().withName(placementListName).build(); if(placementListOperation.isSuccessful()) { Logger.log('Placements list build success'); } var placementList = placementListOperation.getResult(); } placementList.addExcludedPlacements(placements); var sharedExcludedPlacementIterator = placementList.excludedPlacements().get(); while (sharedExcludedPlacementIterator.hasNext()) { var placement = sharedExcludedPlacementIterator.next(); Logger.log(placement.getUrl()); if(placements.indexOf(placement.getUrl()) == -1) { placement.remove(); } } // iterate over all available campaigns var campaignIterator = AdWordsApp.campaigns().get(); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); track(campaign.getId()); // just for statistics, no sensitive data collected campaign.addExcludedPlacementList(placementList); } // iterate over all video campaigns var videoCampaignIterator = AdWordsApp.videoCampaigns().get(); while (videoCampaignIterator.hasNext()) { var tmpExcludedChannels = youtubePlacements; var videoCampaign = videoCampaignIterator.next(); var excludedYoutubeChannelIterator = videoCampaign.videoTargeting().excludedYouTubeChannels().get(); while (excludedYoutubeChannelIterator.hasNext()) { var excludedYouTubeChannel = excludedYoutubeChannelIterator.next(); if (tmpExcludedChannels.indexOf(excludedYouTubeChannel.getChannelId()) !== -1) { delete tmpExcludedChannels[tmpExcludedChannels.indexOf(excludedYouTubeChannel.getChannelId())]; } } tmpExcludedChannels = tmpExcludedChannels.filter((item) => typeof item === 'string'); // Exclude all YouTube channels in batch from campaign for (i=0; i<tmpExcludedChannels.length; i++){ videoCampaign.videoTargeting().newYouTubeChannelBuilder().withChannelId(tmpExcludedChannels[i]).exclude(); } } }
Autor Google Ads skriptov