Følgende er en samling hurtige tips og trick til PAD. De fleste af disse kræver ikke en længere forklaring, og er ment mere som et hurtigt overblik, til diverse.
Navn | Note | Link |
Variabler properties | Nogle variabler har properties, som kan benyttes til forskellige formål | Datatype properties – Power Automate | Microsoft Learn |
Pagination på hjemmesider | Eksempel på KY, se afsnit 1. Pagination | KY – Kommunernes Ydelsessystem – RPA Help |
Debugging | Se afsnit 4. Debugging, for eventuelt længere eksempel på at lave egen debugging til PAD som er GDPR compliant | Kodestruktur – RPA Help |
1. Variabler #
1.1 Tom / blank variabel #
For at lave en tom variabel eller matche på en, skal man indsættes %”% hvilket bliver oversat til tom.

1.2 Datatype properties #
Nogle datatyper har properties tilknyttet, som kan bruges til forskellige formål. Som eksempel herunder laver vi en count på mængden af items i en list og i en datatable, som fortæller hvor mange items der er på hver.

1.3 I Selector (custom selectors) #
Ønsker man at bruge variabler i sine selectors, kan disse godt indsættes direkte i selectoren, de vil dog ikke virke.

Hvis man åbner Text editor, indsætter variablen hvor den skal bruges, og herefter trykker Save, så virker det.
Vær opmærksom på at ændrer man selectoren tilbage til trævisning, så virker variablen ikke.

1.4 Custom object (variabler med flere værdier) #
Ved eksempelvis formular udfyldninger, kan man ende med at have mange ekstra variabler, der kun bruges til dette ene formål. I sådanne tilfælde kan man lave et custom object til at indeholde disse. Dette kan hjælpe med læsbarheden, ved at reducere mængden af variabler, man skal kunne se hvad bruges til og eller stammer fra.
Oprettelse af et custom object, er i formattet %{‘Navn’:’value’}% som komma separeres hvis der skal flere værdier med.

Det vil se således ud når det er kørt.

Skal man hente enkelte variabler ud, kan det gøres således.

1.5 Talformat – Amerikansk til dansk #
Amerikanske talformater kan drille ind imellem, når der skal udregnes beløb. Herunder et en hurtig løsning til hvordan man kan konvertere et amerikansk talformat til dansk talformat.
Eksemplet vil også virke hvis der ingen forekomst af komma er eksempelvis 23.50

1.6 Tjek Lower / Upper Case og om Numeric #
Det følgende eksempel tjekker en given karakter ad gangen, om den er et tal eller ej, og bygger en liste i Run-Time til senere brug i en Send Keys action.

Her følger vi en anden fremgangsmetode med Regular Expressions i stedet, som tjekker om bogstavet er stort eller lille. I samme omgang for at få vores Send Key til at virke, skal alle bostaverne imellem {} være uppercase.

Her ses et fuldt eksempel, som tjekker for både numeric og case-sensitivt bogstav.

1.7 Konverter tekst til decimal #
Power Automate Desktop benytter engelsk format til tal, hvilket vil sige at punktum bruges i stedet for komma, og omvendt.

Før en konventering, skal teksten gøres klar. I en Replace text kan man søge efter punktum og erstatte med ingenting (%””%), og herefter søge efter komma og lave om til punktum. Når dette er gjort kan man lave en Convert text to number, som så laver teksten om til et decimal. Har man behov for at lave det om til dansk format senere, for at indsætte det et sted igen, skal man lave en replace text punktum med komma.

1.8 Søg i DataTable #
Det kan være lidt besværligt at finde data i et DataTable, man kan dog bruge en Find or replace in data table-action til formålet.

Såfremt man finder et match, kan man konvertere indexet til et tal (det kommer ud som tekst i resultatet), og bruge denne til at trække data ud fra den pågældende rækkes kolonner som vist herunder.

2. Logik #
2.1 Boolske udtryk #
Man kan bruge booleans i if og else actions, som tjekker på flere krav. Second Operand skal sættes til enten true eller false som vist i eksemplet nedenfor.
Vær opmærksom på at i Power Automate skal strenge stå som ‘ ‘.
Boolsk udtryk | Power Automate |
Lig med | = |
Større end | lig med | > | >= |
Mindre end | lig med | < | <= |
Ikke lig med | <> |
Eller | OR |
Og | AND |
Blank / Tom | %”% | ” |
True | %true% |
False | %false% |
Contains* | Contains(VAR,’Value’,False) |
NotContains* | NotContains(VAR,’Value’,False) |
IsEmpty | IsEmpty(VAR) |
IsNotEmpty | IsNotEmpty(VAR) |
StartsWith* | StartsWith(VAR,’Value’,False) |
NotStartsWith* | NotStartsWith(VAR,’Value’,False) |
EndsWith* | EndsWith(VAR,’Value’,False) |
NotEndsWith* | NotEndsWith(VAR,’Value’,False) |
* vær opmærksom på at False værdien er omkring case-sensitivity (false = sensitive, true = ignore case), og undlades den er det ignore case som standard.
Eksempel

2.2 Switch Case #
En Switch kan anses som en menu, og Cases kan anses som punkter i denne, der bliver valgt alt efter hvad input er til Switchen. Det er et alternativ til lange if elseif koder, hvor en robot skal matche hver enkelt linje. I en switch case matcher vi på cases en gang, og derfor arbejder disse ekstremt hurtigt, og kan ind imellem erstatte lange komplicerede udregninger. Et simpelt eksempel kan være at få et månedsnummer lavet om til navnet (kan bruges til at gemme filer som en del af navnet og lignende). Man har også muligheden for at lave en Default Case som bruges, såfremt ingen af de andre cases matcher.

Et mere avanceret eksempel kan være til udregning af hvilken celle i et Excel ark et beløb skal sættes ind i, alt efter hvilken måned det økonomisk tilhører. Man kan i Cases lave nye Switches med nye Cases, så det er en nem og hurtig måde at lave denne slags udregninger på. De 4 Set Variables her skal forestille noget man har fået andetsteds i sin proces, eksempelvis i et loop, der selv udregner hvilken række i Excel vi er nået til.



3. Kode bibliotek / Desktop Flow templates #
Grundet måden solutions er opbygget på, er det muligt at lave et kodebibliotek, lignende et User Library, for dem som har haft Softomotives ProcessRobot. Hvis man har kode man genbruger meget, kan man lave det som sit eget dekstop flow, og kalde denne i sine andre desktop flows hvori koden skal bruges. Dette kan være alt fra upload til et ESDH system, til kode der kan validere et CPR nummer m.m. Ved at gøre det på denne måde, skal man kun ændre koden et sted, når der er ændringer.
I eksemplet herunder, har vi et simpelt desktop flow, som modtager en input variabel i form af en string (i skrivende stund er det ikke muligt at vælge en DateTime), og generere en output variabel med månedens navn i, for den dato der tjekkes for.

I vores nye desktop flow, hvor vi ønsker at benytte denne funktionalitet, behøver vi blot lave en Run desktop flow action, og vælge vores desktop flow, samt fodre den en input variabel. Vær opmærksom på at input variablens data type, skal være den samme som der blev sat tidligere, i dette tilfælde en string.

I forhold til samlingen af dem, har jeg valgt at gemme dem alle i en solution for sig, og give dem som kan køres som Desktop Flow et Tmp prefix, så de er til at finde i drop-down menuen.

4. Web automation – Pagination #
Til at hive data ud fra hjemmesider, kan man enten bruge Recorder eller indsætte en Extract data from web page, og åbne den pågældende hjemmeside mens popup vinduet i PAD er åbent i sidstnævntes tilfælde.

Kører man musen over elementer på siden, bliver de markeret i rødt. Hvis man højreklikker får man muligheden for at trække data ud. Ved tabeller får man typisk muligheden for at hente hele tabellen ud. Ønsker man kun specifikke kolonner, kan man trække value ud fra øverste række i kolonnen, og herefter trække value ud på den nedenfor, hvorefter PAD selv trækker resten af kolonnen ud.

Hvis der er flere sider med data, kan man højreklikke på den knap, som bringer næste side op, og vælge Set element as pager. Når robotten kører og trækker data ud, vil den efterfølgende trykke på Næste selv i eksemplet, og hive data ud og tilføje til tidligere udtræk.

Når man er færdig trykker man på Finish. Har man brugt Recorder får man nu alle de actions indsat man har lavet, samt en Extract data from web page action.

5. Send Keys #
Det er muligt i Send Key actions at indsætte hvor mange gange man ønsker et klik, ved at indsætte et kolon og antal efterfølgende, frem for at skulle paste for hver enkelt identisk key. Hvis man trykker flere knapper samtidigt, er det i den sidste, at tallet skal indsættes i (eksempel {Alt({Tab:5}) ).

6. Copy-Paste kode via tekst #
Det er nemt at copy-paste kode frem og tilbage imellem Desktop Flows hos sig selv. Hvis man har brug for at dele med andre, kan man copy-paste sin kode ud i en notesblok, og sende indholdet til en anden. Vedkommende kan copy-paste dette og indsætte direkte i sit eget Desktop Flow, og det skulle gerne importere de rigtige udfyldte actions.
Dette er et eksempel på at udregne sidste kvartal ud fra dagens dato.

Følgende er koden i plain tekst, som kan importeres af andre direkte i et Desktop Flow.
“
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateOnly CurrentDateTime=> DateCurrent
SET QtYearCurrent TO 1 / 3 – 1
Variables.TruncateNumber.GetIntegerPart Number: QtYearCurrent Result=> QtYearCurrent
IF QtYearCurrent = 0 THEN
SET QtYearCurrent TO 4
END
“
7. Copilot hjælp til scripts #
Til diverse script actions (VBScript, Powershell, SQL etc) kan man bruge Copilot, og indsende en prompt, som returnere et brugbart script.
