Forum Discussion
How to programmatically set a dymanic URL
Hi there
I want to read the daily exchange rates from www.xe.com but I need to cchange teh URL to include the correct date. Below is my code but this does not work:
let
xDate = Text.From(DateTime.Date(DateTime.LocalNow())),
Source = Web.Page(Web.Contents("http://www.xe.com/currencytables/?from=ZAR&date=" & xDate )),
Data0 = Source{0}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data0,{{"Currency code ▲▼", type text}, {"Currency name ▲▼", type text}, {"Units per ZAR", type number}, {"ZAR per Unit", type number}})
in
#"Changed Type"I do not get an error when the code executes but I do not get a table return. Setting the source as:
Source = Web.Page(Web.Contents("http://www.xe.com/currencytables/?from=ZAR&date=" & "2017-04-13" )),does work however.
Help would be greaatly appreciated!
Thanks
Paul
You can use Date.ToText to get the date in the required format.
Additionally I wouldn't rely on Source{0}, but address the required element.
let xDate = Date.ToText(DateTime.Date(DateTime.LocalNow()),"yyyy-MM-dd"), Source = Web.Page(Web.Contents("http://www.xe.com/currencytables/?from=ZAR&date=" & xDate )), Data0 = Table.SelectRows(Source, each [Id] = "historicalRateTbl"){0}[Data], #"Changed Type" = Table.TransformColumnTypes(Data0,{{"Currency code ▲▼", type text}, {"Currency name ▲▼", type text}, {"Units per ZAR", type number}, {"ZAR per Unit", type number}}) in #"Changed Type"
7 Replies
- Phil_SeamarkMicrosoft Employee
Hi palunel
This worked for me
let xDate = Text.From(DateTime.Date(DateTime.LocalNow())), Source = Web.Page(Web.Contents("http://www.xe.com/currencytables/?from=ZAR&date=" & xDate )), Data = Source{0}[Data], #"Changed Type" = Table.TransformColumnTypes(Data,{{"Currency", type text}, {"Rate", type number}, {"", type text}}) in #"Changed Type"- palunelHelper I
Phil_Seamark, so that's odd. I get the same result as you but it returns a completely wrong table. That we.com query should return this :
- MarcelBeugCommunity Champion
You can use Date.ToText to get the date in the required format.
Additionally I wouldn't rely on Source{0}, but address the required element.
let xDate = Date.ToText(DateTime.Date(DateTime.LocalNow()),"yyyy-MM-dd"), Source = Web.Page(Web.Contents("http://www.xe.com/currencytables/?from=ZAR&date=" & xDate )), Data0 = Table.SelectRows(Source, each [Id] = "historicalRateTbl"){0}[Data], #"Changed Type" = Table.TransformColumnTypes(Data0,{{"Currency code ▲▼", type text}, {"Currency name ▲▼", type text}, {"Units per ZAR", type number}, {"ZAR per Unit", type number}}) in #"Changed Type"