Autor: Martin Bradáč

Power Automate umí velmi snadno vytvářet CSV soubory. S jejich zpracováním je to ale už složitější. Typickou úlohou je automatizované uložení hodnot z CSV souboru do Sharepointového seznamu.

Na úvod se sluší upozornit na konektor Parse CSV, který by tuto úlohu zvládl velmi elegantně. Zásadní nevýhodou ovšem je, že patří k externím akcím a jeho využití podléhá licenční politice vývojáře. Zdarma je možné ho využít pouze 50x za měsíc. Pro někoho to může stačit, ale v případě, že budete chtít úlohu opakovat dvakrát denně, limit překročíte.

Vyjdeme z toho, že CSV soubor je text s hodnotami oddělenými oddělovačem. Nejčastěji to je čárka nebo středník. Co jeden řádek, to jeden záznam. Power Automate naštěstí disponuje celou řadou akcí a výrazů pro práci s textem a textovými proměnnými.

Předesílám, že následující postup je trochu pracný, ale funkční. Pro zjednodušení má náš vstupní soubor pouze dva sloupce – jméno a číslo:

  • “Jan Novák”;123456
    “Pepa Vomáčka”;456789
    “Jarda Nepovím”;789123

Tyto hodnoty budou uloženy do souboru v Sharepointové knihovně.  A my je chceme zároveň uložit do Sharepointového seznamu se stejnou strukturou.

  • Vytvoříme automatický tok se spouští „Když je ve složce vytvořen soubor.
  • Nyní si deklarujeme proměnné. Do jedné uložíme obsah souboru, dvě typu integer nám pomohou při cyklickém zpracování textového souboru.
    • prevIndex – integer, hodnota 0
    • nextIndex – integer, hodnota 0
    • hodnoty – string, hodnotou bude výraz Array(triggerOutputs()?[‘body’]). Díky tomu dostaneme do proměnné obsah souboru včetně netisknutelnými znaky. Je to velmi důležité.

  • Vytvoříme cyklus „Do until“.

  • Na jeho začátku nastavíme hodnotu nextIndex – vyhledáme další výskyt konce řádku výrazem:
    • @{indexOf(substring(variables(‘tmpString’),variables(‘prevIndex’)),’\’)}

Akcí substring získáme řetězec mezi konci řádku – tedy celý jeden záznam satrtovací pozice je previndex, délka nextindex.

Samostatné hodnoty pak získáme například výrazem substring a indexOf.  Na konci cyklu zvýšíme hodnotu proměnné prevIndex.