Win + Excel=RPA?

RPA je slovo, které se poslední dobou používá snad na všechno a je to strašně moderní. Zpracovávat data na webu je pomocí excel možné a je to rychlé a ne zas tak složité, ale jak zautomatizovat nějakou appku co je bez API či určena jen na „klikání“? Tak bych chtěl ukázat že i pomocí Excel si takového klikacího robota můžete vytvořit.

Popis objektu má vlastní stránku ZDE

7 řádek kódu a můžete stahovat data. Pokud by se hlídalo zpoždění aplikace/webu, je potřeba ještě hlídat zda po zkopírování emailu je v hodnotě @ a pokud ne čekat x ms a pokusit se stáhnout znovu.

Již před pár lety jsem si hrál s Arduinem co místo uživatelů klikal a prováděl všemožné operace. Jeho velká nevýhoda byla, že neuměl reagovat na to o se dělo v PC, tak ho někdo musel „hlídat“. Řekl jsem si, že když excel může díky všemožným API přistupovat k WIN proč by nemohl pracovat jako klávesnice a myš. A tak jsem si vytvořil objekt co mi toto umožnil.

Největší úskalí bylo umožnit uživateli proces stopnout či vypnout. Toto jsem vyřešil zachytáváním stisku konkrétní klávesy, vybral jsem END, ale nastavit jde jakákoli. Jen END nereagoval v mnou automatizované aplikaci na nic a na klávesnici jde snadno najít. Toto zachytávání jsem vložil do funkce pro čekání a tuto funkci jsem vložil do každé další funkce. Při stisku klávesy se musí pár milisekund čekat na reakci aplikace. Pokud by se čekání neprovádělo aplikace by nestihla reagovat a klikalo by kdo ví kam.

Další problém byl s vkládáním hodnot, excel umí psát jako klávesnice, ale na vkládané hodnoty má vliv nastavení jazyku, capslock, numlock a další… A tak pro většinu vkládání hodnot používám clipboard (schránka pro ctrl+c), schránku nejdříve naplním požadovanou hodnotou (setClipboard) a pak použiji nějakou funkci co má v názvu ctrlV(ta funguje stejně jako vypadá popis, „zmáčkne“ ctrl+v).

Interakce s aplikací probíhá na základě kontroly hodnot v polích. Kde jde v aplikaci použít ctrl+c, tam jde hodnota zkontrolovat. Použiji funkci co má v názvu ctrlC (například klik na nějaké místo s ctrl+c) a pak hodnotu pomocí getClipboard zkontroluji. Kontrola pomocí obrázku nebo OCR není součástí tohoto objektu, ale možná je. OCR je možné zasáním obrázku na web co nabízí OCR, a jak vytvořit výstřižek na požadovaných souřadnicích popíši jindy.

Jak psát kód:

  • Automatizaci píši většinou pro běžné uživatele PC, tudíž je dobré aby uživatel co se děje. To řeším popisem postupu do Application.StatusBar .
  • Nastavení před spuštěním dělám většinou následovně. Uživatel si musí dát automatizovanou aplikaci na levou stranu obrazovky a excel na pravou. I toto jde zautomatizovat, ale já radši nechávám na ručním nastavení. Ale správnost rozvržení lze kontrolovat hlídáním nějaké hodnoty na konkrétním místě.
  • Po spuštění procesu píši do Application.StatusBar co se zrovna provádí aby si to mohl případně vyzkoušet a při problému dokáže lépe popsat kde je chyba. A označím žllutš zpracovávaný řádek.
  • Při zpracovávání nějakého seznamu ještě ukládám zda byla hodnota zpracována a pokud ne jaký byl důvod (ošetření v blocích mi ukáže zda proces zkolaboval).
  • Osobně postupuji při automatizaci po blocích. Každý blok se dá do vlastní funkce a vyhodnocuji zda se dokončil správně. Blok vrací true nebo false. Například: Login zavolám jako funkci s parametry jméno a heslo. Ve funkci si pomocí objektu klávesnice a myši nastavím kam klikat a hlídání zda po přihlášení pomocí ctrlC a getClipboard jsem tam kde mám být, pokud ano vrátím true jinak false. Při false končím proces, či „vyskáči“ na známou obrazovku a začínám znovu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.