Vyberte stránku

Sklik skript: Sestavy bez volné shody

Sklik skript: Sestavy bez volné shody

Konec volné modifikované shody a úprava chování frázové shody v Google Ads způsobila českým PPC specialistům komplikace při práci s klíčovými slovy.

Frázová shoda se nyní v Google Ads chová jinak než v Skliku. Pokud jako já pracujete s Google Ads Editorem, může se stát, že před exportem zapomenete shodu změnit. V Skliku pak klíčová slova ve volné shodě chybí a zcela zbytečně přicházíte o relevantní zobrazení a prokliky.

Jak skript funguje?

Skript 1x denně projde všechny uvedené Sklik účty. V případě, že některá reklamní sestava určená pro vyhledávací síť neobsahuje volnou shodu, název sestavy si uloží. Po kontrole všech účtů odešle souhrnný email se všemi sestavami bez volné shody.

Kód skriptu

Jedná se o skript pracující výhradně s Sklikem, takže ho můžete implementovat přes Google Apps Scripts nebo přímo v Google Ads. Mě osobně běží na úrovni MCC.

Na začátku skriptu si podle instrukcí nezapomeňte vyplnit potřebné parametry a to:

  • email,
  • předmět,
  • token,
  • seznam Sklik účtů k revizi.

Frekvenci spouštění skriptu mám nastavenou na 1x denně.

/*********************************************************************************************************
Skript:           Sklik skript na kontrolu reklamních sestav pro vyhledávání, ve kterých chybí volná shoda
Vytvořila:        Hana Kobzová [hanakobzova.cz]
Základ skriptu:	  Standa Jílek [standajilek.cz]
/********************************************************************************************************/


//Doplňte emailovou adresu a předmět emailu pro výsledný report
var EMAIL = "muj@email.com";
var SUBJECT = "Sklik - Chybí volná shoda";

//Doplňte Sklik API token, najdete ho v Sklik účtu => Nastavení => Získat přístup k API
var token = '0x101aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-account@seznam.cz';

//Doplňte seznam účtů ke kontrole. Účty jsou odděleny čárkou. Za posledním se čárka neuvádí.
var sklik_settings = [
	"account1@seznam.cz", 
	"account2@seznam.cz"
];

//Neupravovat
var output = "";


function main(){

//Datum--------------------------------------------------------------------------------------------------
//Minulý měsíc
    var start_date = new Date();
    start_date.setUTCDate(1);
    start_date.setMonth(start_date.getMonth() - 1);
    start_date = Utilities.formatDate(start_date, 'GMT + 1', 'yyyy-MM-dd');

    var end_date = new Date();
    end_date.setUTCDate(0);
    end_date = Utilities.formatDate(end_date, 'GMT + 1', 'yyyy-MM-dd');


//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': client_login.session}], 'client.get')

        var sklik_account = [];

        for (var i = 0; i < sklik_settings.length; i++) //Sklik account
        {
            for (var j = 0; j < client_get.foreignAccounts.length; j++)
            {
                if (sklik_settings[i] == client_get.foreignAccounts[j].username)
                {
                    sklik_account.push([client_get.foreignAccounts[j].userId, client_get.foreignAccounts[j].username, sklik_settings[i]]);
                }
            }
            if (sklik_settings[i] == client_get.user.username)
            {
                sklik_account.push([client_get.user.userId, client_get.user.username, sklik_settings[i]]);
            }
        }


        //Cycle for a number of accounts
        for (var x = 0; x < sklik_account.length; x++)
        {
          
          sklik_account_id = sklik_account[x][0];
          sklik_account_name = sklik_account[x][1];
          
        
        var adGroupCampaign = [];
        var adGroupCampaign_row = [];
    
  

    
//createReport-------------------------------------------------------------------------------------------
var createReport = sklik_api([{'session': session, 'userId': sklik_account_id},
                    {   'names': [{'operator': 'NOT_CONTAINS', 'value': 'EXACT'}],
                        'isDeleted': false,
                        'mixedStatus': ['active'],
                        'campaign': {'isDeleted': false, 'status': ['active'], 'type': ['fulltext']},
                        'dateFrom': start_date,
                        'dateTo': end_date}],
                        'groups.createReport');

                var report_id = createReport.reportId;
                var limit = createReport.totalCount;
                var offset = Math.ceil(limit / 5000);

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

            //cyklus pro procházení statistik
            if (readReport.report.length > 0)
            {
                for (var j = 0; j < readReport.report.length; j++)
                {   
                    adGroupCampaign_row = [readReport.report[j].name, readReport.report[j].campaign.name];
                    adGroupCampaign.push(adGroupCampaign_row);

                }
                

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

  var adgroupNameSeparate;
  var campaignNameSeparate;

 

 //začátek práce pro adgroups
  for (var a = 0; a < adGroupCampaign.length; a++)
    {
      adgroupNameSeparate = adGroupCampaign[a][0]
      campaignNameSeparate = adGroupCampaign[a][1];
    

     var createReport2 = sklik_api([{'session': session, 'userId': sklik_account_id},
                    {   'isDeleted': false,
                        'mixedStatus': ['active'],
                        'campaign': {'names': [{'operator': 'PHRASE', 'value': campaignNameSeparate}], 'isDeleted': false, 'status': ['active']},
                        'group': {'names': [{'operator': 'PHRASE', 'value': adgroupNameSeparate}], 'isDeleted': false, 'status': ['active']},
                        'matchType': ['broad'],
                        'dateFrom': start_date,
                        'dateTo': end_date}],
                        'keywords.createReport');

    
    var report_id2 = createReport2.reportId;
    var limit = createReport2.totalCount;
    
    if (limit === 0){
      output += sklik_account_name + ": " + campaignNameSeparate + " => " + adgroupNameSeparate + "<br>";
    }
      
      
    
    
}
        
          
} // konec cycle of accounts
  
  Logger.log("Final Output: "+output);
  
  //Pošli email
  if (typeof(output) != "undefined"){
    if (output.length > 0){
    //output = SUBJECT + "<p>--------------------------------------------------------------</p>" + output;
    MailApp.sendEmail(EMAIL, SUBJECT, "", {htmlBody: output});
    }
  }


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


}

//-------------------------------------------------------------------------------------------------------
//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 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)));
        }
    }
}

Podařilo se vám kontrolu chybějící volné shody v Skliku nastavit? Pokud ne, ozvěte se. Ráda poradí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!

Vložit komentář

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