Skrypt Google Ads: Match Types Issues Checker

Dopasowania słów kluczowych to jedno z najważniejszych ustawień kierowania reklam w sieci wyszukiwania.
Dzięki niemu możemy zdecydować, czy chcemy wyświetlić reklamy szerokiemu gronu odbiorców (dopasowanie przybliżone), czy precyzyjnie wybrać grupę docelową (dopasowanie ścisłe).

Dobrą praktyką jest używanie 3 typów dopasowania:

-ścisłego
-do wyrażenia
-modyfikator dopasowania przybliżonego

W niektórych przypadkach warto również zastosować dopasowanie przybliżone np. dla kategorii produktów, które sprzedają się najlepiej lub w czasie wyprzedaży.

Pracując na rozbudowanych kontach reklamowych dla e-commerce, często trzeba wprowadzać wiele zmian naraz. Niestety dopasowania słów kluczowych to element danych, który jest podatny na błąd. Szczególnie jeśli dokonujemy zmian w Edytorze Google Ads lub w Excelu.

Zdarza się, że w czasie tworzenia lub przenoszenia wielu elementów kampanii, słowa kluczowe zostaną dodane z błędnym dopasowaniem.
Najczęściej dotyczy słów kluczowych z modyfikatorem dopasowania przybliżonego (posiadających znak + przed każdym wyrazem) dodanych jako ścisłe lub do wyrażenia.

Poniższy skrypt Google Ads sprawdzi, czy taki błąd występuje na wskazanym koncie.

Jeśli znajdzie słowa kluczowe w dopasowaniu ścisłym lub do wyrażenia zawierające znak +, to otrzymamy wiadomość e-mail z ich lokalizacją.

Konfiguracja:
Wprowadź swój e-mail do zmiennej EMAIL

Harmonogram: raz dziennie


Po więcej na temat Skryptów zapraszam na grupę FB:
https://www.facebook.com/groups/zaawansowane.google.ads


/*

Copyright 2020 Krzysztof Bycina, www.LiveAds.pl
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

*/

// --------------------------------------- Configuration:

var EMAIL = 'ENTER YOUR EMAIL HERE';

// --------------------------------------- End of the configuration


function main() {

    validateEmail(EMAIL);

    //Check the keywords
    var badKeywords = findBadKeywords();

    //Are there any mistakes in match types?
    if (badKeywords[0]) {

        //Print each mistake to the console
        badKeywords.forEach(function(mistake) {
            Logger.log(mistake);
        });

        sendEmails(badKeywords);

    } else {
        Logger.log("Good job! No mistakes in match types.");
    }
}

function findBadKeywords() {
    var badKeywords = [];
    var campaigns = AdsApp.campaigns()

        //Skip experiment campaigns
        .withCondition("CampaignExperimentType = BASE")
        .withCondition("Status = ENABLED")
        .get();

    while (campaigns.hasNext()) {
        var theCampagin = campaigns.next();
        var keywords = theCampagin
            .keywords()
            .forDateRange('LAST_7_DAYS')
            .withCondition("Status = ENABLED")
            .withCondition("AdGroupStatus = ENABLED")
            .withCondition("CampaignStatus = ENABLED")
            .withCondition("KeywordMatchType IN [PHRASE, EXACT]")
            .withCondition("Text CONTAINS '+'")
            .get();
        if (keywords.totalNumEntities() > 0) {
            while (keywords.hasNext()) {
                var keyword = keywords.next();
                var kwName = keyword.getText();
                var kwCampaignName = keyword.getCampaign();
                var kwAdgroupName = keyword.getAdGroup();
                badKeywords.push(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + kwName + ' has an inappropriate match type.');
            }
        }
    }
    return badKeywords;
}

function validateEmail(email) {
    var key = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    if (key.test(email) === false) {
        throw new Error('You must eneter a valid email address to run the script.');
    }
}


function sendEmails(badKeywords) {
    MailApp.sendEmail(EMAIL,
        AdWordsApp.currentAccount().getName() + ' has ' + badKeywords.length + ' keywords with an inappropriate match type.',
        'Hi, \n\nPlease, check these keywords: \n\n' + badKeywords.join("\n"));
}




Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *