Vyberte stránku

Sklik skript: Kontrola počtu reklam v sestavách

Sklik skript: Kontrola počtu reklam v sestavách

Nemáte přehled o tom, kolik aktivních reklam máte v každé sestavě v Skliku? Zjistěte to rychle, jednoduše a hlavně automaticky pomocí tohoto Sklik skriptu!

Problém: Chcete si ověřit počet aktivních rozšířených inzerátů v každé sestavě. Je jich někde málo? Nebo naopak moc?

U klienta, kde se často aktualizuje znění reklam, se mi stalo, že některé reklamy měly být už pozastavené, ale stále jsou aktivní, ačkoliv je měl importní soubor vygenerovaný z Google AdWords Editoru zastavit.

Sklik sám ve svém prostředí nabízí přehled nad kampaněmi vč. počtu inzerátů, ale zaprvé není moc přehledný, nelze v něm filtrovat, ale hlavně zahrnuje do počtu také pozastavené reklamy.

Počet reklam v Skliku

Pomocí generátoru reportů Standy Jílka jsem si vygenerovala základ kódu, který jsem následně upravila tak, abych získala report s počtem aktivních rozšířených reklam (ETA) v každé sestavě. Tento report se generuje do Google Sheets a odkaz na něj je zaslán emailem, jakmile je připraven.

Když si hotový report otevřete, udělejte si nad daty filtr, seřaďte sloupec “Počet inzerátů” a najděte sestavy s nízkým nebo naopak vysokým počtem inzerátů. Výstup bude vypadat takto:

Sklik skript: počet inzerátů

Jak skript implementovat?

Skript byl připraven v prostředí Google Scripts. Vytvořte si nový spreadsheet v Google Sheets, běžte do Nástroje => Editor skriptu a tam vložte kód, který najdete níže.

Aby skript správně pracoval je třeba vyplnit následující parametry, které najdete na jeho začátku:

  • odkaz na nový prázdný spreadsheet v Google Sheets (optimálně ten, který jste právě vytvořili pro vložení skriptu)
  • váš email, kde bude zaslán odkaz na hotový report
  • Sklik token, který získáte v nastavení vašeho Sklik účtu
  • Název (email) individuálního účtu v případě, že používáte token pro MCC

Jakmile je vše připraveno, můžete skript spustit přes menu Spustit => Spustit funkci => main (poprvé bude třeba skript autorizovat) a je to! 🙂 Počkejte si na email, který vám brzy dorazí.

//Nastavení----------------------------------------------------------------------------------------------
//*******************************************************************************************************
var spreadsheet = ''; //uveďte url adresu prázdného Google Sheets
var email = ''; //uveďte emailovou adresu, kam bude report zaslán
//Token
var token = ''; //uveďte Sklik token
var sklik_account = ''; //používáte-li token z MCC účtu, zadejte název single účtu
/********************************************************************************************************
Skript vytvořila Hana Kobzová, https://hanakobzova.cz
Základ skriptu byl vygenerován generátorem od Standy Jílka na adrese: www.standajilek.cz/skripty/navody/sklik-api/generator/
********************************************************************************************************/

function main() {
//Nadefinování spreadsheetu
    var ss = SpreadsheetApp.openByUrl(spreadsheet).getActiveSheet();

//Pole pro export do spreadsheetu
    var sheet_export = [];
    var sheet_row = [];

//Přihlášení
//client.login-------------------------------------------------------------------------------------------
    var client_login = sklik_api([token], 'client.loginByToken');
    var session = client_login.session;

//client.get---------------------------------------------------------------------------------------------
    var client_get = sklik_api([{'session': session}], 'client.get');
    //cyklus, který projde všechny účty a přiřadí správné userId vámi nadefinovaného účtu
    for (var i = 0; i < client_get.foreignAccounts.length; i++)
    {
        if (sklik_account.toLowerCase() == client_get.foreignAccounts[i].username.toLowerCase())
        {
            var sklik_account_id = client_get.foreignAccounts[i].userId;
        }
    }

//Datum--------------------------------------------------------------------------------------------------
//Počet dní zpátky
    var start_date = new Date();
    start_date.setUTCDate(start_date.getUTCDate() - 1);
    start_date = Utilities.formatDate(start_date, 'GTM - 1', 'yyyy-MM-dd');

    var end_date = new Date();
    end_date.setUTCDate(end_date.getUTCDate() - 1);
    end_date = Utilities.formatDate(end_date, 'GTM - 1', 'yyyy-MM-dd');

//createReport-------------------------------------------------------------------------------------------
    var createReport = sklik_api([{'session': session, 'userId': sklik_account_id},
        {'isDeleted': false,
            'status': ['active'],
            'adType': ['eta'],
            'campaign': {'isDeleted': false, 'status': ['active']},
            'group': {'isDeleted': false, 'status': ['active']},
            'dateFrom': start_date,
            'dateTo': end_date}],
            'ads.createReport');

    var report_id = createReport.reportId;
    var limit = createReport.totalCount;

    var offset = Math.ceil(limit / 5000);

    for (var i = 0; i < offset; i++)
    {
        try
        {
//readReport---------------------------------------------------------------------------------------------
            var readReport = sklik_api([{'session': session, 'userId': sklik_account_id},
                report_id,
                {'offset': i * 5000,
                    'limit': 5000,
                    'allowEmptyStatistics': true,
                    'displayColumns': ['campaign.name', 'group.name', 'id']}],
                    'ads.readReport');

            //cyklus pro procházení statistik
            if (readReport.report.length > 0)
            {
              
                var array = [];
                var output = [];
                for (var j = 0; j < readReport.report.length; j++)
                {
                  array.push([readReport.report[j].campaign.name, readReport.report[j].group.name]); 
                }
                array.sort(compareSecondColumn);
                var count = 0;
                for (var k = 1; k < array.length; k++)
                {                  
                  if (array[k][0].equals(array[k-1][0]) && (array[k][1].equals(array[k-1][1])))
                  {
                      count++;
                      } else {
                         count++;
                         output.push([array[k-1][0], array[k-1][1], count]);
                         count = 0;
                      }
                }

            }
        } catch (err)
        {
        }
        Utilities.sleep(200);
    }

//Hlavička tabulky
    ss.getRange(1, 1, 1, 3).setValues([['Název kampaně', 'Název sestavy', 'Počet inzerátů']]);
//Smazání předchozích dat
    ss.getRange(2, 1, ss.getLastRow(), 3).clearContent();
//Export do spreadsheetu
    if (output.length > 0)
    {
        ss.getRange(2, 1, output.length, 3).setValues(output);
    }

//client.logout------------------------------------------------------------------------------------------
    var client_logout = sklik_api([{'session': session}], 'client.logout');

//Obnovení spreadsheetu
    SpreadsheetApp.flush();
  
//Výstup
  Logger.log(spreadsheet);
  MailApp.sendEmail(email, "Sklik script - Počet inzerátů", "", {htmlBody: spreadsheet});

}

//-------------------------------------------------------------------------------------------------------
//Funkce pro komunikaci
function sklik_api(parameters, method) {
    var url = 'https://api.sklik.cz/jsonApi/drak/'  + method;
    var options = {'method': 'post', 'contentType': 'application/json', 'muteHttpExceptions': true, 'payload': JSON.stringify(parameters)};

    try {
        return(JSON.parse(UrlFetchApp.fetch(url, options)));
    } catch (err)
    {
        Utilities.sleep(1000);
        try {
            return(JSON.parse(UrlFetchApp.fetch(url, options)));
        } catch (err)
        {
            Utilities.sleep(1000);
            return(JSON.parse(UrlFetchApp.fetch(url, options)));
        }
    }
}

//Funkce pro seřazení pole
function compareSecondColumn(a, b) {
    if (a[1] === b[1]) {
        return 0;
    }
    else {
        return (a[1] < b[1]) ? -1 : 1;
    }
}

Máte problém s implementací skriptu nebo byste rádi nějaké úpravy? Kontaktujte mě.

Jsem online marketérka na volné noze. Specializuji se na PPC reklamu v Google Ads a Sklik. Baví mě přemýšlet nad efektivitou mé práce, proto často objevím nějaký trik či vychytávku, jak zefektivnit práci na PPC kampaních nebo si sem tam naprogramuji užitečný skript, aby mi šla práce lépe od ruky. Hledáte PPC specialistu? Zjistěte o mě více nebo mi rovnou napište!

2 Komentáře(ů)

  1. Honza Krelina

    Pěkný den, bylo by mozné, aby skript i ukázal 0 aktivních inzerátů u aktivní sestavy, kde není zádný aktivní inzerát. Stalo se mi několikrát u klienta, ze v aktivních sestavách neměl ani jednu aktivní reklamu, ale bohuzel toto skript neukáze.

    dekuji
    Honza Krelina

    Odpovìdìt
    • Hana Kobzová

      Dobrý den, měla jsem stejný problém jako vy, ale bohužel to nejde jednoduše vyřešit v rámci stejného skriptu nějakou drobnou úpravou. Tento skript pracuje na úrovni reklam, 0 aktivních inzerátů v sestavě by se ale muselo řešit na úrovni sestavy, takže je to úplně jiná logika. Samozřejmě by to šlo vyřešit, ale v podstatě je to psaní kódu zcela od 0 jako by se jednalo o úplně jiný skript.

      Odpovìdìt

Vložit komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *