//Nastavení----------------------------------------------------------------------------------------------
//*******************************************************************************************************
var spreadsheet = 'https://docs.google.com/spreadsheets/d/1J1efr15eFtggt5sffsre544e5mNX_SGfU/edit';
var token = '0x101c0a3dd0654sd5fsdcgt1r56sf6f1s5f6sd65sdf4fs58ssf6fee1051c92b230514a-account@seznam.cz';
var sklik_account = 'account@seznam.cz'; //pokud používáte token z MCC účtu, zadejte název single účtu
/********************************************************************************************************    
Skript:         Sklik API client
Verze:          06.12.2017
Návod vytvořil: Stanislav Jílek [standajilek.cz]
*********************************************************************************************************/

function main() {
//Nadefinování spreadsheetu
    var ss = SpreadsheetApp.openByUrl(spreadsheet);
    var sheet = ss.getSheetByName('data');

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

//client.stats------------------------------------------------------------------------------------------- 
//Včerejší den
    var yesterday = new Date();
    yesterday.setUTCDate(yesterday.getUTCDate() - 1);
    yesterday = Utilities.formatDate(yesterday, 'GTM - 1', 'yyyy-MM-dd');

    var client_stats = sklik_api([{'session': session, 'userId': sklik_account_id}, {'dateFrom': yesterday, 'dateTo': yesterday, 'granularity': 'total'}], 'client.stats');

    var clicks = client_stats.report[0].clicks;
    var impressions = client_stats.report[0].impressions;
    var cost = client_stats.report[0].price / 100;
    var conversions = client_stats.report[0].conversions;
    var conversionValue = client_stats.report[0].conversionValue / 100;

    //Přidej řádek do spreadsheetu 
    sheet.getRange('A1:F1').setValues([['Datum', 'Prokliky', 'Zobrazení', 'Cena', 'Konverze', 'Hodnota konverze']])
    sheet.appendRow([yesterday, clicks, impressions, cost, conversions, conversionValue]);

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