Delte negative søgeordlister er en helt central funktion i Google Ads. Med sådanne lister kan man dele negative søgeord på tværs af kampagner i et snuptag. Der er en række halvfarlige søgetermer jeg altid er bevidst om og de placeres fint på en delt negativ liste. Man kigger således sine søgetermer igennem jævnligt og påfører dem til den negative liste. Hvis de altså ikke skal på annoncegruppe- eller kampagneniveau. Den negative liste påføres de kampagner hvor det giver mening. De skarpe Google Ads specialister laver søgeordsanalyse FØR lancering af en Google Ads kampagne og har allerede styr på mange negative søgeord.
Men hvad hvis man ønsker at dele negative søgeord på tværs af Google Ads konti? Man har således en række søgeord som enten er så generiske at de kan bruges til næsten alle konti eller er branchespecifikke og bør påføres flere konti i samme branche. Den gængse løsning er den negative søgeordsliste på MCC niveau. Disse kan påføres enkelte Google Ads konti fra den enkelte konti. Og jo kun vedligeholdes et sted. Det fungerer så vidt ganske fint. En noget dum ting er at man ikke fra den enkelte konti kan påføre søgetermer til den negative liste på MCC niveau men det er til at leve med. Men delte negative søgeordlister på MCC niveau har en åbenlys svaghed:
Delte negative søgeordslister på MCC niveau er tilgængelige for alle der har adgang til en konto i pågældende MCC!
Modsat delte målgrupper kan man ikke sætte begrænsninger på hvem som kan se den negative søgeordslisten. Man har således brugt måneder for ikke at se sige år på at opbygge en perfekt negativ liste i en branche. Nu snuppes den så af andre. Mange med de rette rettigheder vil også kunne modificere den negative liste og påføre eller fjerne søgetermer! Med den moral der er i branchen med lange bindinger af kontrakter på Google Ads, overpriser og nødtørstigt arbejde skulle det ikke undre mig at negative søgeordslister snuppes i stor stil.
Jeg har udarbejdet en løsning som ikke benytter negative søgeordslister på MCC niveau. Her er et Google Ads script som dels læser den lokale negative søgeordliste og uploader den til Google Sheets. Dernæst checkes om der på listen skulle befinde sig søgeord som ikke er på den lokale liste. Scriptet etablerer man så på alle de Google Ads konti som skal dele den negative liste. En forudsætning er at den negative søgeordliste navngives ens i alle konti. Angiv dette navn i scriptet ligesom en URL til det benyttede ark i Google Sheets naturligvis skal angives.
// Konfiguration
const SPREADSHEET_URL = “”; // Erstat med din Google Sheets URL
const SHEET_NAME = “Negative Keywords”; // Navnet på arket i Google Sheets
const NEGATIVE_LIST_NAME = “”; // Navnet på den delte negative liste
function main() {
// Åbn Google Sheets
const spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
const sheet = spreadsheet.getSheetByName(SHEET_NAME) || spreadsheet.insertSheet(SHEET_NAME);
// Hent den delte negative liste
const negativeListIterator = AdsApp.negativeKeywordLists()
.withCondition(`Name = “${NEGATIVE_LIST_NAME}”`)
.get();
if (!negativeListIterator.hasNext()) {
Logger.log(`Kunne ikke finde en negativ liste med navnet “${NEGATIVE_LIST_NAME}”.`);
return;
}
const negativeList = negativeListIterator.next();
const existingNegativeKeywords = new Set();
// Trin 1: Kopier søgeord fra den delte negative liste til Google Sheets
const negativeKeywords = negativeList.negativeKeywords().get();
while (negativeKeywords.hasNext()) {
const keyword = negativeKeywords.next();
const keywordText = keyword.getText();
const matchType = keyword.getMatchType();
existingNegativeKeywords.add(`${keywordText}-${matchType}`); // Kombiner søgeord og match type som en unik nøgle
// Tjek om søgeordet allerede findes i Google Sheets
const data = sheet.getDataRange().getValues();
let keywordExists = false;
for (let i = 1; i < data.length; i++) { // Start på række 1 for at springe overskriften over
if (data[i][0] === keywordText && data[i][1] === matchType) {
keywordExists = true;
break;
}
}
// Tilføj søgeordet til Google Sheets, hvis det ikke allerede findes der
if (!keywordExists) {
sheet.appendRow([keywordText, matchType]);
}
}
Logger.log(`Søgeord fra den delte liste “${NEGATIVE_LIST_NAME}” er kopieret til Google Sheets.`);
// Trin 2: Hent søgeord fra Google Sheets, der ikke findes i den delte negative liste, og tilføj dem
const data = sheet.getDataRange().getValues();
let newKeywordsAdded = 0;
for (let i = 1; i < data.length; i++) { // Start på række 1 for at springe overskriften over
const keywordText = data[i][0]; // Søgeordet er i første kolonne
const matchType = data[i][1]; // Match type er i anden kolonne
// Formatér søgeordet korrekt baseret på match type
let formattedKeyword;
if (matchType === “EXACT”) {
formattedKeyword = `[${keywordText}]`; // Eksakt match
} else if (matchType === “PHRASE”) {
formattedKeyword = `”${keywordText}”`; // Frase match
} else if (matchType === “BROAD”) {
formattedKeyword = keywordText; // Bred match
} else {
Logger.log(`Ukendt match type: ${matchType} for søgeordet “${keywordText}”. Springes over.`);
continue;
}
// Tjek om søgeordet allerede findes i den delte negative liste med samme match type
const uniqueKey = `${keywordText}-${matchType}`;
if (!existingNegativeKeywords.has(uniqueKey)) {
// Tilføj søgeordet til den delte negative liste
negativeList.addNegativeKeyword(formattedKeyword);
existingNegativeKeywords.add(uniqueKey); // Tilføj til Set for at undgå duplikater i samme kørsel
newKeywordsAdded++;
}
}
Logger.log(`Tilføjede ${newKeywordsAdded} nye negative søgeord til den delte liste “${NEGATIVE_LIST_NAME}”.`);
}
Begge handlinger logføres og man vil således kunne se noget i retning af dette i kørselsloggen. Det er naturligvis vigtigt at følge dette i starten så man er fortrolig med afviklingen af de delte negative søgeordlister.
28.1.2025 22.25.07 | Søgeord fra den delte liste “Negativ delt” er kopieret til Google Sheets. |
28.1.2025 22.25.07 | Tilføjede 2 nye negative søgeord til den delte liste “Negativ delt”. |
Google Ads scriptet scheduleres som vanligt og det giver mening at afvikle det på dagsbasis. Når nu alle ens negative søgeord står i Google Sheets kan man naturligvis også her påføre nye negative søgeord direkte og de smides efterfølgende automatisk ud på alle Google Ads konti. Som bekendt er der er begrænsning på negative søgeord. Man kan maksimalt operere med 20 negative søgeordlister og hver liste man maksimalt have 5.000 negative søgeord. Læs mere her. Mit script tager ikke hensyn til grænsen med 5.000 negative søgeord men det burde være enkelt at opsætte en alarm skulle man nærme sig 5.000 negative søgeord!
Har i en udfordring med Google Ads og dårlig performance kan årsagen meget vel være mangel på negative søgeord. Jeg tager gerne et uforpligtende kig på Google Ads kontoen og ser om der er lavthængende frugter. negative søgeord er ofte et af dem. Så kontakt mig og hør nærmere,