3.First dynamic page

Goal

We're trying to print stock market price of Google, Apple and Microsoft using Yahoo finance API

0. Yahoo Query Language

Yahoo have a powerful query language that give us reasonable API to fetch data from verity of data table that their environment has like Yahoo weather or Yahoo finance.

to get more info and create or use queries visit https://developer.yahoo.com/yql/console/

1. API call to get stock market price for Google, Apple and Microsoft

if you call this query should get following result except the numbers and price may be different, for better view we removed the diagnostics section as we're not working with it 

{
	query: {
		count: 3,
		created: "2017-09-28T12:02:57Z",
		lang: "en-US",
		diagnostics: {},
		results: {
		quote: [
			{
				symbol: "AAPL",
				AverageDailyVolume: "26531500",
				Change: "+1.09",
				DaysLow: "153.54",
				DaysHigh: "154.72",
				YearLow: "104.08",
				YearHigh: "164.94",
				MarketCapitalization: "796.63B",
				LastTradePriceOnly: "154.23",
				DaysRange: "153.54 - 154.72",
				Name: "Apple Inc.",
				Symbol: "AAPL",
				Volume: "25504227",
				StockExchange: "NMS"
			},
			{
				symbol: "GOOG",
				AverageDailyVolume: "1521100",
				Change: "+19.63",
				DaysLow: "927.74",
				DaysHigh: "949.90",
				YearLow: "727.54",
				YearHigh: "988.25",
				MarketCapitalization: "654.42B",
				LastTradePriceOnly: "944.49",
				DaysRange: "927.74 - 949.90",
				Name: "Alphabet Inc.",
				Symbol: "GOOG",
				Volume: "2239441",
				StockExchange: "NMS"
			},
			{
				symbol: "MSFT",
				AverageDailyVolume: "21253800",
				Change: "+0.59",
				DaysLow: "73.17",
				DaysHigh: "74.17",
				YearLow: "56.32",
				YearHigh: "75.97",
				MarketCapitalization: "568.81B",
				LastTradePriceOnly: "73.85",
				DaysRange: "73.17 - 74.17",
				Name: "Microsoft Corporation",
				Symbol: "MSFT",
				Volume: "19565135",
				StockExchange: "NMS"
			}
			]
		}
	}
}

2. Use JavaScript Runner to get the data

Insert a JavaScript Runnet at the top of a new Confluence page and type following script in the body of the macro

Inside JavaScript Runner
var yahooFinanceQuery='https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quote%20where%20symbol%20in%20(%22AAPL%22%2C%22GOOG%22%2C%22MSFT%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=';
var yahooFinanceData=JSON.parse(http.get(yahooFinanceQuery));
var apple=yahooFinanceData.query.results.quote[0];
var google=yahooFinanceData.query.results.quote[1];
var microsoft=yahooFinanceData.query.results.quote[2];
context.set("google",google);
context.set("microsoft",microsoft);
context.set("apple",apple);

LINE DESCRIPTIONS:

1:  Created a variable to hold the url that calls the query

2: Call the url using http object get function and parse the result into a JSON object at the same time

3,4,5: Create variables to hold each symbol stock market data info

6,7,8: Use context object to attach those variable to this page context so other Javascript Runner macros in this page be able to access those

2. Use varibales attached to the context

Now we will create a table and inside each table cell we will insert a JavaScript Runner macro calling the property we need

3. View the Dynamic Table

The table's data will be updated each time page loads, in this example the stock price per share will get updated