Hvordan formatere dato i MS Flow?

format date

Microsoft Flow brukes ofte til å sende ut auto-genererte mailer som henviser til en dato. Dette kan for eksempel være mailer som påminner om en oppgave som må gjøres eller som sender kvittering på at noe er utført. Alle som har vært borti å lage en slik flow vil ha opplevd å få en mail med et ganske uleselig datoformat.

2019-04-09T06:00:09.5497830Z

Så hvordan kan denne datoen formateres til noe som gir mer mening for mennesker? Innebygget i Flow finner vi en formatdatetime funksjon. Denne er dessverre noe komplisert og bruke og den er lite dokumentert. Det tok derfor noen timer med prøving og feiling og søking på mange forum for å få dette til. For at andre skal slippe frustrasjonen med å få til denne tilsynelatende enkle operasjonen, har jeg laget denne steg for steg guiden for å formatere dato.

Formatere dagens dato

Hvis flowen skal sende dagens dato, kan denne formateres med ganske enkel kode. Klikk på området hvor datoen skal dettes inn, og klikk på expressions i boksen som dukker opp på siden. Her skriver du inn funksjonen formatdatetime.

Videre må man fortelle funksjonen hva som skal formateres. Dagens dato finnes også som en egen funksjon i Flow, kalt UtcNow(). Denne skrives inn inn i parantes slik:

formatDateTime (UtcNow())

Detter må man fortelle funksjonen hvilket format man ønsker at datoen skal formateres til. Man setter da inn et komma og fyller inn ønsker format mellom to apostrofer ‘ ’. Et vanlig europeisk format som 01.01.2019 skriver man inn slik:

formatDateTime(utcNow(), ‘dd.MM.yyyy’)

Om man ikke ønsker å vise år eller man vil bruke / i stedet for punktum så er også disse gyldige formater. Om man ønsker klokkeslett kan man fylle inn hh:mm, men fordi utcNow() returnerer UTC tid, vil ikke dette stemme med det norske klokkeslettet. Å formatere tidssone blir et annen operasjon som jeg ikke vil komme inn på her.

Formatere dato fra Sharepoint liste

I mange tilfeller er man ikke interessert i dagens dato, men f.eks dato for en frist. I mitt eksempel er denne datoen lagret som metadata i et sharepoint bibliotek, men den kan også hentes fra mange andre kilder som bruker datoformat. Når Flow leser datoer fra slike lister vil den automatisk være på formatet 2019-04-09T06:00:09.5497830Z.

Før datoen kan refereres i funksjonen må tabellen hvor datoen er skrevet må først hentes inn i Flow. I mitt tilfelle skulle en mail sendes ut dersom en frist var nådd. Flow bruker da en ‘apply to each’ funksjon for å teste om hvert element i listen har nådd fristen. Funksjonen som formaterer datoen må derfor også brukes på hvert element hver for seg. Formateringsfunksjonen vil da se slik ut:

formatDateTime(items(‘Apply_to_each’)?[‘Navn_x0020_på_xx20_kolonne’], ‘dd.MM.yyyy’)

items(‘Apply_to_each’) – henviser til value i «apply to each» tidligere i flowen, altså den tabellen som er hentet inn i Flow fra sharepoint. Dersom denne har et annet navn som ‘Apply_to_each_2’ må dette navnet brukes i formelen.

? – Brukes for å tillate at en kolonne er tom, uten at hele flowen krasjer.

_x0020_ – brukes for å fortelle Flow at her er det et mellomrom i kolonnenavnet hvor datoen er.

Flow funksjoner som ikke er «click & drag» kan foreløpig være noe komplisert å bruke, men vil forehåpentligvis bli mer brukervennlig etter hvert. Frem til da håper jeg at denne forklaringen kan være til hjelp for andre som skal formatere datoer i Flow.