DOŁĄCZ DO GRUPY
BEZPŁATNY AUDYT
SKRYPT PMAX
NEWSLETTER

Zaawansowane Google Ads

5,001 członków

Dołącz do naszej społeczności ekspertów Google Ads i zyskaj dostęp do zaawansowanych strategii, wsparcia specjalistów i inspirujących case studies.

Prywatna grupa - Tylko zatwierdzeni członkowie

Nie jesteś pewny, czy Twoje reklamy działają tak, jak powinny?

Umów się na bezpłatny audyt konta Google Ads

Profesjonalna analiza

Szybki kontakt i konkretne informacje zwrotne.

Analiza efektywności
Weryfikacja Strategii
Praktyczne rekomendacje
Propozycja współpracy

Chcesz lepiej zrozumieć działanie kampanii Performance Max?

PMax Channels Analyzer

Darmowy skrypt dla Google Ads

Analizuj wydatki i konwersje z poszczególnych kanałów w kampaniach Performance Max.

Podział na kanały
Szczegółowe statystyki
Łatwa instalacja
Automatyczne raporty

Zapisz się na newsletter i otrzymuj praktyczne porady oraz narzędzia, które usprawnią twoje konto reklamowe.

Skrypt Google Ads: Average CPC Monitor

Zarządzając reklamami w Google Ads, mamy do wyboru dwa główne typy ustalania stawek:

1) ręczne,
2) automatyczne.

W pierwszym przypadku może zdarzyć się, że ustawimy wyższą kwotę, niż planowaliśmy, np. 20 zł zamiast 2 zł. W tej sytuacji pomoże nam skrypt sprawdzający, czy stawki nie przekraczają ustalonych norm.

Jeśli chodzi o automatyczne strategie, to również może zdarzyć się, że stawki za słowa kluczowe będą zbyt wysokie. Średnie CPC w danym dniu może wynieść kilkanaście lub nawet kilkadziesiąt złotych.

Przygotowałem skrypt, który co godzinę sprawdza, czy średnie CPC przekroczyło ustaloną normę. Jeśli tak, to otrzymamy wiadomość e-mail.


Harmonogram: co godzinę

Konfiguracja:
1. Utwórz etykietę i oznacz nią kampanie, które ma sprawdzać skrypt
2. Wprowadź treść etykiety do zmiennej CAMPAIGN_LABEL
3. Wprowadź swój e-mail do zmiennej EMAIL
4. Wprowadź maksymalną dopuszczalną wartość dla średniego CPC do zmiennej MAX_BID


Po więcej na temat Google Ads dla e-commerce zapraszam na moją grupę FB:
https://www.facebook.com/groups/zaawansowane.google.ads


//Updated on 21.03.2020: Small code structure improvements

/*

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";
var CAMPAIGN_LABEL = "ENTER THE CAMPAIGN LABEL HERE";
var MAX_BID = 5;

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




function main() {

    validateEmail(EMAIL);
    var emailData = findBadKeywords();
    sendEmails(emailData);

}


function findBadKeywords() {

    var badKeywords = [];
    var campaigns = AdWordsApp
        .campaigns()
        .withCondition("LabelNames CONTAINS_ANY ['" + CAMPAIGN_LABEL + "']")
        .get();

    while (campaigns.hasNext()) {
        var campaign = campaigns.next();
        var keywords = campaign
            .keywords()
            .forDateRange('TODAY')
            .withCondition('Clicks > 0')
            .get();

        while (keywords.hasNext()) {
            var keyword = keywords.next();
            var stats = keyword.getStatsFor("TODAY");
            var avgCPC = stats.getAverageCpc();
            var kwName = keyword.getText();
            var kwCampaignName = keyword.getCampaign();
            var kwAdgroupName = keyword.getAdGroup();

            //Check the average CPC for each keyword
            if (avgCPC > MAX_BID) {
                badKeywords.push(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + kwName + ' has avg. CPC above the set maximum: ' + avgCPC);
                Logger.log(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + kwName + ' has avg. CPC above the set maximum: ' + avgCPC);
            }
        }
    }
    return badKeywords;
}


function sendEmails(data) {
    if (data[0]) {
        MailApp.sendEmail(EMAIL, AdWordsApp.currentAccount().getName() +
            " has bids that don't meet your requirements.", 'Hi, \n\nPlease, check these keywords: \n\n' + data.join("\n"));
    }
}

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 enter a valid email address to run the script.');
    }
}

Dodaj komentarz

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