En liste med valutakurser i SharePoint, holdt opdateret med Power Automate
Et planlagt flow slår hver valuta på listen op i Den Europæiske Centralbanks RSS-feeds og skriver kursen mod euro og kroner ind. Kun standardhandlinger.
En liste i SharePoint med valutakurser, der altid er opdaterede, kan andre lister og apps slå op i. Et planlagt flow går listens valutaer igennem og henter kursen for hver. Kilden er Den Europæiske Centralbank (ECB), som har et RSS-feed pr. valuta. RSS-connectoren er en standardconnector, så flowet kræver ikke Premium.
Listen#
Listen Currencies har kolonnerne Title (valutakoden, fx USD), EURrate, DKKrate og eventuelt USDrate, som regnes ud på samme måde som DKKrate, bare med USD-feedet i stedet for kronens. Flowet opdaterer alle valutaer, der står på listen, så en ny valuta kommer med ved at tilføje en række.
Flowet#
Recurrence hver 12. time. ECB opdaterer kurserne én gang på hverdage omkring kl. 16, så én gang i døgnet er rigeligt.
Initialize variable for varEURrate, varDKKrate, varEURRSSURL og varDKKperEUR, alle af typen String.
Kronekursen først. ECB’s kurser er mod euro, så kursen i kroner regnes ud via euro. Flowet henter derfor kronens kurs én gang, før løkken, med List all RSS feed items på:
https://www.ecb.europa.eu/rss/fxref-dkk.html
og gemmer den i varDKKperEUR:
@{first(split(first(body('List_all_RSS_feed_items_-_DKK'))?['title'],' '))}
Titlen på et punkt i feedet ser sådan ud: 7.4756 DKK = 1 EUR 2026-09-23 ECB Reference rate. Det første ord er kursen.
Get items på listen, og derefter Apply to each over elementerne:
- Condition
@items('Apply_to_each')?['Title']er ikke lig medEUR. For euro selv er kursen 1, og i nej-grenen sættesvarEURratetil@{string('1.00')}. Trin 2–4 står i ja-grenen. - Set variable
varEURRSSURLtil valutaens feed:
@{concat('https://www.ecb.europa.eu/rss/fxref-',toLower(items('Apply_to_each')?['Title']),'.html')}
- List all RSS feed items (
List all RSS feed items - EUR) med@{variables('varEURRSSURL')}. - Set variable
varEURrate, antal af valutaen pr. euro:
@{first(split(first(body('List_all_RSS_feed_items_-_EUR'))?['title'],' '))}
- Set variable
varDKKrate, kroner pr. enhed af valutaen:
@{div(float(variables('varDKKperEUR')),float(variables('varEURrate')))}
For kronen selv giver det 1, og for euro kronekursen. Nationalbanken angiver kurser pr. 100 enheder, så sammenlignes der med deres tal, skal der ganges med 100.
- Update item med
@{items('Apply_to_each')?['ID']},@{items('Apply_to_each')?['Title']},EURrate=@{variables('varEURrate')}ogDKKrate=@{variables('varDKKrate')}.
Det der driller#
- Løkken skal køre sekventielt. Variablerne sættes inde i Apply to each, så samtidighed skal slås fra (grad 1), ellers blander gennemløbene hinandens kurser.
- Decimaltegnet er punktum. Feedet bruger punktum, og
float()forventer punktum. Listens talkolonner viser kursen med komma på et dansk websted, men gemmer tallet rigtigt. - Ikke alle valutaer findes. ECB har kurser for omkring 30 valutaer. En kode uden feed giver en fejl i RSS-handlingen. Sæt Configure run after på et trin, der markerer rækken, hvis listen skal kunne rumme hvad som helst.
- Den første titel er den nyeste. Feedet står med nyeste kurs øverst, derfor
first(). - Nationalbankens egen kilde er i dag en XML-fil med alle dagens kurser mod kroner,
https://www.nationalbanken.dk/api/currencyratesxml?lang=en. Den kræver HTTP-handlingen, som er premium, og derfor bruger flowet ECB og regner kronekursen ud.