V konferenci pro webové analytiky teď padl dotaz, jak jednoduše sledovat v pravidelných intervalech nějaký web, vzít z něj nějakou hodnotu a zapsat si ji někam do tabulky, pro nějaké budoucí vyhodnocení, porovnání atp.

K tomu samozřejmě můžete použít různé specializované nástroje typu Apify, nebo si napsat nějaký skript třeba v PHP a spouštět jej CRONem, ale velmi dobře se k tomu dá použít i bezplatný Google Sheets a případně Google Apps Script.

Samotný Google Sheets má několik vestavěných importních funkcí, lišících se podle toho, jestli chcete data brát z (X)HTML či třeba z CSV, tedy když vám jde jen o to mít v nějaké buňce například aktuální hodnotu odstavce, který má třídu .visits, které má třídu .visits, můžete do pole napsat nějakou takovouhle funkci

=IMPORTXML("https://www.example.com","//p[@class='visits]")

(jestli máte nastavené české prostředí, bude tam středník, ne čárka).

A tahle funkce vám prostě při otevření dokumentu a jednou za čas zaktualizuje hodnotu buňky a vpíše do ní ten obsah daného odstavce, viz nápověda k funkci IMPORTXML.

Ale když chcete mít i historii, provádět test v pravidelných intervalech a ještě třeba k tomu připsat datum a čas, abyste to mohli vyhodnotit, samotná funkce je vám k ničemu, i tak vám to ale Google Sheets umožní a to díky jednoduchému skriptu v Google Apps Script.

Kód nechám bez vysvětlení, věřím že i tak pochopíte co dělá, výsledek je pak zde.

/**
 * @OnlyCurrentDoc
 */
function getData() {
    var url = "http://www.bazenmb.cz/";
    var celkem = new RegExp("návštěvníků celkem: (.*?)</span>");
    var wellness = new RegExp("návštěvníků wellness: (.*?)</span>");
  
    var content = UrlFetchApp.fetch(url).getContentText();
    celkem = celkem.exec(content)[1];
    wellness = wellness.exec(content)[1];
    var all = [ new Date(), celkem,  wellness];
    Logger.log(all);
    return all;
}
function saveData() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 sheet.appendRow(getData());
}

To aby se prováděl nějaký skript pravidelně, v tomto případě každých 15 minut, docílíte pomocí tzv. spoušťěčů / triggers, momentálně se v Apps Scripts Editoru nachází pod Edit / Current project’s triggers. Tam zvolíte příslušný skript, který chcete provádět, zde je to funkce saveData(), zvolíte interval a máte hotovo.

Join the Conversation

1 Comment

Leave a comment

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