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.
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:
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!
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
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.