Academy/Scripts/Konfliktkoll för negativa sökord

Konfliktkoll för negativa sökord

SEM & Google Adsgoogle-ads-script18 mars 2026

Hittar konflikter mellan negativa sökord och aktiva sökord i ditt Google Ads-konto. Kör schemat dagligen för att undvika att du blockerar din egen trafik.

#google-ads#negative-keywords#automation#quality
negative-keyword-conflict-checker.js
/**
 * Negative Keyword Conflict Checker
 * Hittar konflikter mellan negativa sökord och aktiva sökord.
 * Skickar en rapport via email om konflikter hittas.
 *
 * Instruktioner:
 * 1. Sätt EMAIL till din e-postadress
 * 2. Kör som preview först
 * 3. Schemalägg dagligen
 */

var EMAIL = "din@email.se";

function main() {
  var negatives = {};
  var conflicts = [];

  // Samla alla negativa sökord på kampanjnivå
  var negIterator = AdsApp.negativeKeywords().get();
  while (negIterator.hasNext()) {
    var neg = negIterator.next();
    negatives[neg.getText().toLowerCase()] = {
      text: neg.getText(),
      matchType: neg.getMatchType(),
      campaign: neg.getCampaign().getName()
    };
  }

  // Kolla mot aktiva sökord
  var kwIterator = AdsApp.keywords()
    .withCondition("Status = ENABLED")
    .withCondition("CampaignStatus = ENABLED")
    .withCondition("AdGroupStatus = ENABLED")
    .get();

  while (kwIterator.hasNext()) {
    var kw = kwIterator.next();
    var kwText = kw.getText().toLowerCase().replace(/[\[\]+"]/g, "");

    for (var negText in negatives) {
      var cleanNeg = negText.replace(/[\[\]+"]/g, "");
      if (kwText.indexOf(cleanNeg) !== -1 || cleanNeg.indexOf(kwText) !== -1) {
        conflicts.push({
          keyword: kw.getText(),
          kwCampaign: kw.getCampaign().getName(),
          negative: negatives[negText].text,
          negCampaign: negatives[negText].campaign
        });
      }
    }
  }

  // Rapportera
  if (conflicts.length > 0) {
    var body = "Hittade " + conflicts.length + " konflikter:\n\n";
    conflicts.forEach(function(c) {
      body += "Sökord: " + c.keyword + " (kampanj: " + c.kwCampaign + ")\n";
      body += "  → Blockeras av negativt: " + c.negative + " (kampanj: " + c.negCampaign + ")\n\n";
    });
    MailApp.sendEmail(EMAIL, "⚠️ Negative Keyword Konflikter", body);
    Logger.log("Skickade rapport med " + conflicts.length + " konflikter.");
  } else {
    Logger.log("Inga konflikter hittades!");
  }
}

Prova scriptet i ett demokonto

Se loggen, ändringarna och vad utfallet betyder — innan du klistrar in det i Google Ads.

Demokonto
Skript · Konfliktkoll för negativa sökord
Inte körd ännu
/**
* Negative Keyword Conflict Checker
* Hittar konflikter mellan negativa sökord och aktiva sökord.
* Skickar en rapport via email om konflikter hittas.
*
* Instruktioner:
* 1. Sätt EMAIL till din e-postadress
* 2. Kör som preview först
* 3. Schemalägg dagligen
*/
var EMAIL = "din@email.se";
function main() {
var negatives = {};
var conflicts = [];
// Samla alla negativa sökord på kampanjnivå
var negIterator = AdsApp.negativeKeywords().get();
while (negIterator.hasNext()) {
var neg = negIterator.next();
negatives[neg.getText().toLowerCase()] = {
text: neg.getText(),
matchType: neg.getMatchType(),
campaign: neg.getCampaign().getName()
};
}
// Kolla mot aktiva sökord
var kwIterator = AdsApp.keywords()
.withCondition("Status = ENABLED")
.withCondition("CampaignStatus = ENABLED")
.withCondition("AdGroupStatus = ENABLED")
.get();
while (kwIterator.hasNext()) {
var kw = kwIterator.next();
var kwText = kw.getText().toLowerCase().replace(/[\[\]+"]/g, "");
for (var negText in negatives) {
var cleanNeg = negText.replace(/[\[\]+"]/g, "");
if (kwText.indexOf(cleanNeg) !== -1 || cleanNeg.indexOf(kwText) !== -1) {
conflicts.push({
keyword: kw.getText(),
kwCampaign: kw.getCampaign().getName(),
negative: negatives[negText].text,
negCampaign: negatives[negText].campaign
});
}
}
}
// Rapportera
if (conflicts.length > 0) {
var body = "Hittade " + conflicts.length + " konflikter:\n\n";
conflicts.forEach(function(c) {
body += "Sökord: " + c.keyword + " (kampanj: " + c.kwCampaign + ")\n";
body += " → Blockeras av negativt: " + c.negative + " (kampanj: " + c.negCampaign + ")\n\n";
});
MailApp.sendEmail(EMAIL, "⚠️ Negative Keyword Konflikter", body);
Logger.log("Skickade rapport med " + conflicts.length + " konflikter.");
} else {
Logger.log("Inga konflikter hittades!");
}
}
Tryck på Förhandsgranska för att se vad skriptet gör i demokontot.

Simulerad körning i ett påhittat demokonto. Skriptets riktiga kod körs i din webbläsare mot exempeldata — inget ansluts till Google Ads, inga mejl skickas och inga kalkylark skapas.

Instruktioner

Så använder du scriptet

Steg 1: Kopiera scriptet

Gå till Google Ads → Verktyg → Scripts och skapa ett nytt script.

Steg 2: Konfigurera

Ändra EMAIL variabeln till din e-postadress.

Steg 3: Testa

Klicka Preview för att köra en testkörning utan att göra ändringar.

Steg 4: Schemalägg

Sätt scriptet att köra dagligen kl 08:00 för att fånga konflikter tidigt.

Vad scriptet gör

  • Hämtar alla negativa sökord på kampanjnivå
  • Jämför mot alla aktiva sökord
  • Hittar överlappningar (exakt och partiell match)
  • Skickar en e-postrapport om konflikter hittas

    Vanliga resultat

    • Breda negativa som oavsiktligt blockerar long-tail sökord
    • Negativa på kampanjnivå som stör andra kampanjer i kontot