Guest User

hl_price - extracts fund price from hl website

a guest
Dec 1st, 2020
43
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // hl_price function to extract share prices for OEIC / UT from Hargreaves Lansdown webpage
  2. //
  3. // Created because google IMPORTXML function wasn't loading
  4. //
  5. // See the following link for a problem description
  6. // https://support.google.com/docs/forum/AAAABuH1jm0YMhLzXEfwkI/?hl=en
  7. //
  8. // Code obtained from
  9. // https://stackoverflow.com/questions/39014766/to-exceed-the-importxml-limit-on-google-spreadsheet/48483734#48483734
  10. //
  11. // Also see following link for a slightly different approach using xml instead of regex to get the price
  12. // https://stackoverflow.com/questions/41253339/trouble-with-importxml-on-google-sheets/41275946#41275946
  13. //
  14. // todo perhaps need to publish the script so that it can be called from other google sheets?
  15.  
  16. function importRegex(url, regexInput) {
  17. var output = '';
  18. var fetchedUrl = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  19. if (fetchedUrl) {
  20. var html = fetchedUrl.getContentText();
  21. if (html.length && regexInput.length) {
  22. output = html.match(new RegExp(regexInput, 'i'))[1];
  23. }
  24. }
  25. // Grace period to not overload
  26. // Utilities.sleep(1000);
  27. return output;
  28. }
  29.  
  30. function hl_price(url) {
  31.  
  32. // regex regular expression to extract the bid price
  33. // HL price looks like this
  34. // <span class="price-label">Sell:</span><span class="bid price-divide" >30,056.71p</span>
  35. var bid_price_regex = '<span class="price-label">Sell:</span><span class="bid price-divide" >([0-9,]*\.[0-9]+[0-9]+)p</span>';
  36.  
  37. // Grace period to not overload
  38. Utilities.sleep(100);
  39.  
  40. return importRegex(url, bid_price_regex);
  41. }
  42.  
  43. // test function - run with Run->Run function->run_test, then look at View->Logs to see output
  44. function run_test() {
  45.  
  46. url = "https://www.hl.co.uk/funds/fund-discounts,-prices--and--factsheets/search-results/v/vanguard-global-small-cap-index-accumulation"
  47.  
  48. Logger.log(url);
  49.  
  50. price = hl_price(url);
  51.  
  52. Logger.log(price);
  53. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×