PageSourceSearch

https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/

html ryanpraski.com collected 2026-10-03 21:03:04 UTC 53,296 bytes, 391 lines download raw bytes

1<!doctype html>
2<!--[if lt IE 7 ]> <html class="no-js ie6" lang="en-US"> <![endif]-->
3<!--[if IE 7 ]>    <html class="no-js ie7" lang="en-US"> <![endif]-->
4<!--[if IE 8 ]>    <html class="no-js ie8" lang="en-US"> <![endif]-->
5<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en-US"> <!--<![endif]-->
6<head>
7
8<meta charset="UTF-8" />
9<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
10<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
11
12<title>Google Analytics Real-Time Data Studio Dashboard - ryanpraski.com</title>
13        <link rel="icon" type="image/png" href="https://www.ryanpraski.com/wp-content/uploads/2014/10/rp32x32favicon.png" />
14    
15<link rel="profile" href="https://gmpg.org/xfn/11" />
16<link rel="pingback" href="https://www.ryanpraski.com/xmlrpc.php" />
17
18  <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
19    <!--[if lt IE 9]>
20      
20<script src="/js/html5shiv.js"></script>
20
21      
21<script src="/js/respond.min.js"></script>
21
22    <![endif]-->
23
24<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
25
26	<!-- This site is optimized with the Yoast SEO plugin v24.2 - https://yoast.com/wordpress/plugins/seo/ -->
27	<meta name="description" content="Tutorial to create a real-time Google Analytics Data Studio dashboard. The real-time Google Analytics data is fed to Google Data Studio via a Google Sheet." />
28	<link rel="canonical" href="https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/" />
29	<meta property="og:locale" content="en_US" />
30	<meta property="og:type" content="article" />
31	<meta property="og:title" content="Google Analytics Real-Time Data Studio Dashboard - ryanpraski.com" />
32	<meta property="og:description" content="Tutorial to create a real-time Google Analytics Data Studio dashboard. The real-time Google Analytics data is fed to Google Data Studio via a Google Sheet." />
33	<meta property="og:url" content="https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/" />
34	<meta property="og:site_name" content="ryanpraski.com" />
35	<meta property="article:published_time" content="2019-02-18T05:59:55+00:00" />
36	<meta property="article:modified_time" content="2019-10-20T17:58:38+00:00" />
37	<meta property="og:image" content="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png" />
38	<meta name="author" content="Ryan" />
39	<meta name="twitter:card" content="summary_large_image" />
40	<meta name="twitter:creator" content="@ryanpraski" />
41	<meta name="twitter:site" content="@ryanpraski" />
42	<meta name="twitter:label1" content="Written by" />
43	<meta name="twitter:data1" content="Ryan" />
44	<meta name="twitter:label2" content="Est. reading time" />
45	<meta name="twitter:data2" content="5 minutes" />
46	
46<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/","url":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/","name":"Google Analytics Real-Time Data Studio Dashboard - ryanpraski.com","isPartOf":{"@id":"https://www.ryanpraski.com/#website"},"primaryImageOfPage":{"@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/#primaryimage"},"image":{"@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/#primaryimage"},"thumbnailUrl":"https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png","datePublished":"2019-02-18T05:59:55+00:00","dateModified":"2019-10-20T17:58:38+00:00","author":{"@id":"https://www.ryanpraski.com/#/schema/person/dcaa3d21ca788b1bca8b9b0d5030fb60"},"description":"Tutorial to create a real-time Google Analytics Data Studio dashboard. The real-time Google Analytics data is fed to Google Data Studio via a Google Sheet.","breadcrumb":{"@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/#primaryimage","url":"https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png","contentUrl":"https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png"},{"@type":"BreadcrumbList","@id":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.ryanpraski.com/"},{"@type":"ListItem","position":2,"name":"Google Analytics Real-Time Data Studio Dashboard"}]},{"@type":"WebSite","@id":"https://www.ryanpraski.com/#website","url":"https://www.ryanpraski.com/","name":"ryanpraski.com","description":"Digital Analytics","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.ryanpraski.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https://www.ryanpraski.com/#/schema/person/dcaa3d21ca788b1bca8b9b0d5030fb60","name":"Ryan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.ryanpraski.com/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/a504c4d4502f76460766c4480f7c135997e05dadcb21284edb9b22cc914ea854?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/a504c4d4502f76460766c4480f7c135997e05dadcb21284edb9b22cc914ea854?s=96&d=mm&r=g","caption":"Ryan"},"sameAs":["https://x.com/ryanpraski"],"url":"https://www.ryanpraski.com/author/ryan/"}]}</script>
46
47	<!-- / Yoast SEO plugin. -->
48
49
50<link rel="alternate" type="application/rss+xml" title="ryanpraski.com &raquo; Feed" href="https://www.ryanpraski.com/feed/" />
51<link rel="alternate" type="application/rss+xml" title="ryanpraski.com &raquo; Comments Feed" href="https://www.ryanpraski.com/comments/feed/" />
52<link rel="alternate" type="application/rss+xml" title="ryanpraski.com &raquo; Google Analytics Real-Time Data Studio Dashboard Comments Feed" href="https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/feed/" />
53<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.ryanpraski.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.ryanpraski.com%2Fgoogle-analytics-real-time-data-studio-dashboard%2F" />
54<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.ryanpraski.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.ryanpraski.com%2Fgoogle-analytics-real-time-data-studio-dashboard%2F&#038;format=xml" />
55<style id="wp-img-auto-sizes-contain-inline-css">
56img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
57/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
58</style>
59<style id="wp-emoji-styles-inline-css">
60
61	img.wp-smiley, img.emoji {
62		display: inline !important;
63		border: none !important;
64		box-shadow: none !important;
65		height: 1em !important;
66		width: 1em !important;
67		margin: 0 0.07em !important;
68		vertical-align: -0.1em !important;
69		background: none !important;
70		padding: 0 !important;
71	}
72/*# sourceURL=wp-emoji-styles-inline-css */
73</style>
74<style id="wp-block-library-inline-css">
75:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
75--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
76
77/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
78</style>
79<style id="classic-theme-styles-inline-css">
80/*! This file is auto-generated */
81.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
82/*# sourceURL=/wp-includes/css/classic-themes.min.css */
83</style>
84
85<style id="global-styles-inline-css">
86:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
86--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
86.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
87/*# sourceURL=global-styles-inline-css */
88</style>
89
90<link rel='stylesheet' id='bootstrap-css' href='https://www.ryanpraski.com/wp-content/themes/stanleywp/css/bootstrap.min.css?ver=3.0.3' media='all' />
91<link rel='stylesheet' id='wpbase-css' href='https://www.ryanpraski.com/wp-content/themes/stanleywp/css/wpbase.min.css?ver=3.0.3' media='all' />
92<link rel='stylesheet' id='font-awesome-css' href='https://www.ryanpraski.com/wp-content/themes/stanleywp/css/font-awesome.min.css?ver=4.0.3' media='all' />
93<link rel='stylesheet' id='magnific-css' href='https://www.ryanpraski.com/wp-content/themes/stanleywp/css/magnific.css?ver=0.9.4' media='all' />
94<link rel='stylesheet' id='theme-style-css' href='https://www.ryanpraski.com/wp-content/themes/stanleywp/style.css?ver=3.0.3' media='all' />
95<link rel='stylesheet' id='googleFonts-css' href='https://fonts.googleapis.com/css?family=Montserrat:400,700&#038;ver=7.0.6' media='all' />
96<script id="jquery-core-js" src="https://www.ryanpraski.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 96
96
97<script id="jquery-migrate-js" src="https://www.ryanpraski.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 97
97
98<script id="modernizr-js" src="https://www.ryanpraski.com/wp-content/themes/stanleywp/js/modernizr.custom.js?ver=2.6.2"></script>
vendor: 1 bytes, line 98
98
99<script id="magnific-js" src="https://www.ryanpraski.com/wp-content/themes/stanleywp/js/magnific.min.js?ver=0.9.4"></script>
vendor: 1 bytes, line 99
99
100<script id="bootstrap-script-js" src="https://www.ryanpraski.com/wp-content/themes/stanleywp/js/bootstrap.js?ver=7.0.6"></script>
vendor: 1 bytes, line 100
100
101<script id="hover-script-js" src="https://www.ryanpraski.com/wp-content/themes/stanleywp/js/hover.zoom.js?ver=7.0.6"></script>
vendor: 1 bytes, line 101
101
102<script id="main-script-js" src="https://www.ryanpraski.com/wp-content/themes/stanleywp/js/main.js?ver=7.0.6"></script>
102
103<link rel="https://api.w.org/" href="https://www.ryanpraski.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.ryanpraski.com/wp-json/wp/v2/posts/992" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.ryanpraski.com/xmlrpc.php?rsd" />
104<meta name="generator" content="WordPress 7.0.6" />
105<link rel='shortlink' href='https://www.ryanpraski.com/?p=992' />
106	
106<script type="text/javascript">
107    // <![CDATA[
108    jQuery(document).ready(function($){
109    	$("a[rel='magnific']").magnificPopup({
110    		type:'image'
111    	});
112    });  
113    // ]]>
114    </script>
114
115    <style id="wp-custom-css">
116/*
117Welcome to Custom CSS!
118
119To learn how this works, see http://wp.me/PEmnE-Bt
120*/
121</style>
122 
123
124</head>
125
126<body data-rsssl=1 class="wp-singular post-template-default single single-post postid-992 single-format-standard wp-theme-stanleywp">
127
128<!-- Google Tag Manager -->
vendor: 63 bytes, lines 128-129
128
129<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
129GTM-NN8TXJ
vendor: 85 bytes, lines 129-130
129"
130height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
131<script>
vendor: 325 bytes, lines 131-135
131(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
132new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
133j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
134'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
135})(window,document,'script','dataLayer','
135GTM-NN8TXJ
vendor: 3 bytes, line 135
135');
135</script>
135
136<!-- End Google Tag Manager -->
137
138
139         
140        <header>
141   
142    
143<nav role="navigation">
144    <div class="navbar navbar-inverse navbar-static-top">
145        <div class="container">
146           <!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
147            <div class="navbar-header">
148            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
149              <span class="icon-bar"></span>
150              <span class="icon-bar"></span>
151              <span class="icon-bar"></span>
152            </button>
153
154                                   <a class="navbar-brand" href="https://www.ryanpraski.com/" title="ryanpraski.com" rel="homepage"><b>ryanpraski.com</b></a>
155                    </div>
156          <div class="navbar-collapse collapse navbar-responsive-collapse">
157			   <ul id="menu-menu-1" class="nav navbar-nav navbar-right"><li id="menu-item-23" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-has-children dropdown menu-item-23"><a href="https://www.ryanpraski.com/" class="dropdown-toggle" data-toggle="dropdown">Digital Analytics Blog <b class="caret"></b></a>
158<ul class="dropdown-menu">
159	<li id="menu-item-330" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-330"><a href="https://www.ryanpraski.com/">All Posts</a></li>
160	<li id="menu-item-326" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-326"><a href="https://www.ryanpraski.com/category/adobe-analytics-api/">Adobe Analytics API</a></li>
161	<li id="menu-item-1039" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1039"><a href="https://www.ryanpraski.com/category/adobe-launch/">Adobe Launch</a></li>
162	<li id="menu-item-329" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-329"><a href="https://www.ryanpraski.com/category/career-development/">Career Development</a></li>
163	<li id="menu-item-328" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-328"><a href="https://www.ryanpraski.com/category/conference-event-commentary/">Conference &#038; Event Commentary</a></li>
164	<li id="menu-item-327" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-327"><a href="https://www.ryanpraski.com/category/excel-google-sheets-tips-tricks/">Excel &#038; Google Sheets Tips &#038; Tricks</a></li>
165	<li id="menu-item-380" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-380"><a href="https://www.ryanpraski.com/category/google-analytics/">Google Analytics</a></li>
166	<li id="menu-item-713" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-713"><a href="https://www.ryanpraski.com/category/quantified-self/">Quantified Self</a></li>
167</ul>
168</li>
169<li id="menu-item-24" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-24"><a href="https://www.ryanpraski.com/about/">About</a></li>
170<li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26"><a href="https://www.ryanpraski.com/contact/">Contact</a></li>
171</ul>
172          </div>
173        </div>
174     </div>           
175</nav>
176
177
178    
178<script type="text/javascript">
179      window.heap=window.heap||[],heap.load=function(t,e){window.heap.appid=t,window.heap.config=e;var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.heapanalytics.com/js/heap.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(t){return function(){heap.push([t].concat(Array.prototype.slice.call(arguments,0)))}},p=["clearEventProperties","identify","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])};
180      heap.load("3112045026");
181    </script>
181
182           
183 
184    </header><!-- end of header -->
185        
186	    
187        <div id="wrapper" class="clearfix">
188    
189    
190<div id="content">
191
192  
193  
194  <article id="post-992" class="post-992 post type-post status-publish format-standard hentry category-google-analytics tag-api tag-data-visualization tag-google-analytics tag-google-data-studio tag-google-sheets tag-real-time">
195
196    <div id="white">
197      <div class="container">
198        <div class="row">
199          <div class="col-lg-8 col-lg-offset-2">
200
201           <section class="post-meta">
202            <!--Comment Out Author Info <p class="author-avatar"><img alt='' src='https://secure.gravatar.com/avatar/a504c4d4502f76460766c4480f7c135997e05dadcb21284edb9b22cc914ea854?s=50&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a504c4d4502f76460766c4480f7c135997e05dadcb21284edb9b22cc914ea854?s=100&#038;d=mm&#038;r=g 2x' class='avatar avatar-50 photo' height='50' width='50' decoding='async'/><ba>Ryan</ba></p>-->
203            <p><bd><time class="post-date">February 18, 2019</time></bd></p>
204          </section><!-- end of .post-meta -->
205
206          <h4>Google Analytics Real-Time Data Studio Dashboard</h4>
207
208
209          
210        <section class="post-entry">
211          <p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom.png" rel='magnific'><img fetchpriority="high" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png" class="alignnone size-large wp-image-998" width="550" height="146" alt="google_analytics_real-time_data_studio_dashboard_zoom" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-1024x271.png 1024w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-300x80.png 300w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom-768x204.png 768w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_zoom.png 1494w" sizes="(max-width: 550px) 100vw, 550px" /></a></p>
212<p>This tutorial shows you how to create a real-time Google Analytics Data Studio dashboard. The real-time Google Analytics data is fed to Google Data Studio via a Google Sheet. The Google Sheet uses Google App Script to query the Google Analytics real-time API.&nbsp;The Google Data Studio dashboard is automatically updated using a Chrome browser extension.</p>
213<h4>How it Works Flow Chart</h4>
214<p>Google Analytics Real-Time API &gt; Google App Script &gt; Google Sheet &gt; Google Data Studio Sheets Connector &gt; Google Data Studio Dashboard &gt; Refresh Automatically using Data Studio Auto Refresh Chrome Extension</p>
215<p><span id="more-992"></span></p>
216<h4>Google Data Studio Dashboard</h4>
217<p>Let&#8217;s start with the end product the <a href="https://datastudio.google.com/open/1Md5C38-qfOonoGiDJYc9eEX0zZOKTj4u" target="_blank" rel="noopener noreferrer">Real-Time Google Data Studio Google Analytics dashboard</a> and work backwards. Below is the embedded data studio dashboard.<br />
218<iframe width="600" height="450" src="https://datastudio.google.com/embed/reporting/1Md5C38-qfOonoGiDJYc9eEX0zZOKTj4u/page/zZ2e" frameborder="0" style="border: 0" allowfullscreen></iframe></p>
219<h4>Google&nbsp;Sheet with Google App Script Pulls Real-Time Data</h4>
220<p>You will setup a Google Sheet to automatically query the Google Analytics real-time reporting API using the magic of Google App Scripts. Make a copy of <a href="https://docs.google.com/spreadsheets/d/1s6jZy5Gwwhj-fzW2ap8I0jcrEHHajPhpTVchOUhabUY/edit?usp=sharing" target="_blank" rel="noopener noreferrer">my sample Google Sheet</a>. This is the data source for you data studio dashboard. It includes the App Script. Go to File &gt; Make a copy to save a copy of the Google Sheet with the Google App Script to your Google Drive.</p>
221<h4>Google App Script</h4>
222<p>The App Script shown below will be included when you copied and saved the Google Sheet to your Google Drive in the previous step. Go to format &gt; script editor this will open the Google App Script editor. In the code go to line 44 and 91 and replace my Google Analytics Vie
222w ID <em>ga:94579701</em> with your view id.&nbsp;To find this id go to Google Analytics &gt; Admin &gt;<em>&nbsp;</em>and copy your view id and paste it into the App Script.</p>
223<p>
223<script src="https://gist.github.com/ryanpraski/e7488d0800257f175ae2dafbff45db0c.js"></script>
223</p>
224<p>You&#8217;ll need to authorize the functions in the Google App Script. To do this choose the getRtPages function from the drop down below the header menu to the right of the debug (bug) icon. Then click on the play button to the left of the debug icon.</p>
225<p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_authorize_function_api.png" rel='magnific'><img loading="lazy" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_authorize_function_api.png" class="alignnone size-full wp-image-1009" alt="google_analytics_real-time_data_studio_dashboard_app_script_authorize_function_api" width="746" height="294" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_authorize_function_api.png 746w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_authorize_function_api-300x118.png 300w" sizes="auto, (max-width: 746px) 100vw, 746px" /></a></p>
226<p>An authorization message will pop up that says:&nbsp;<em>Authorization required ga_realtime needs your permission to access your data on Google.</em> Click the Review Permissions button. Next you will see a Google sign in window. Make sure to sign in or select the Google account that has access to the Google Analytics account with the view id that you will be querying. You&#8217;ll see a message saying the ga_realtime app is not approved. Click on Advanced then click&nbsp;Go to ga_realtime (unsafe). This will launch an approval window to allow the ga_realtime app script to See, edit, create, and delete your spreadsheets in Google Drive and View your Google Analytics data. Click Allow. This only allows the App Script to do this for this specific Google Sheet.</p>
227<p>Your App Script will finally run. On the first run of the App Script you&#8217;ll see the error message like the message shown below:</p>
228<p><em>GoogleJsonResponseException: Project 1004671496245 is not found and cannot be used for API calls. If it is recently created&#8230;</em></p>
229<p>Click on details to see the full error message. You&#8217;ll see that the developer console project needs to be created and the project needs to enable the Google Analytics API. Here is the link to my developer console project&nbsp;(yours should look similar). https://console.developers.google.com/apis/api/analytics.googleapis.com/overview?project=1004671496245 Then click Enable to enable the Analytics API. Then go back to the App Script and run the getRtPages function again. This time you run the App Script you should not see any errors. If you open your Google Sheet you should see the top real-time pages sorted by page views in the last 30 minutes.</p>
230<h4>Time Based App Script Trigger</h4>
231<p>This trigger will automatically run the Google Analytics real-time query every 30 minutes so your data will be fresh in the Google Sheet for your Google Data Studio dashboard. To set up the time based trigger click on clock icon to the left of the play icon in the Google App Script Editor. For the trigger you&#8217;ll want to Choose the getRtPages function to run. Select a Time-driven event source and a Minutes Timer type of time based trigger. Select minute interval Every 30 Minutes. For the Failure notification settings I have it setup to Notify me daily. Click save to save your time based trigger. The screen shot below shows the setup for the trigger.</p>
232<p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_time_based_trigger.png" rel='magnific'><img loading="lazy" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_time_based_trigger.png" class="alignnone size-full wp-image-1011" alt="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_time_based_trigger.png" width="768" height="832" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_time_based_trigger.png 768w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_app_script_time_based_trigger-277x300.png 277w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
233<h4>Copy the Google Data Studio Real-Time Dashboard</h4>
234<p>Make a copy of my <a href="https://datastudio.google.com/open/1Md5C38-qfOonoGiDJYc9eEX0zZOKTj4u" target="_blank" rel="noopener noreferrer">sample Data Studio dashboard</a>&nbsp;by clicking on the copy icon in the top right of the dashboard.</p>
235<p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard.png" rel='magnific'><img loading="lazy" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard-1024x55.png" class="alignnone size-large wp-image-1006" width="550" height="30" alt="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_dashboard.png" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard-1024x55.png 1024w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard-300x16.png 300w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard-768x42.png 768w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy__dashboard.png 1776w" sizes="auto, (max-width: 550px) 100v
235w, 550px" /></a></p>
236<p>After copying the Data Studio dashboard the Create new report prompt shown below will popup. You&#8217;ll want to choose Create New Data Source in the right pane under the New Data Source. Then choose Google Sheets as the source. This will open a list of all your Google Sheets. The screen shot below shows the data studio report copy process. Choose the sheet that you copied from my sample sheet as your source. Then click Connect then click Add to Report then click on Create Report.</p>
237<p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source.png" rel='magnific'><img loading="lazy" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source.png" class="alignnone size-full wp-image-1012" alt="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source.png" width="945" height="520" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source.png 945w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source-300x165.png 300w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_copy_create_new_data_source-768x423.png 768w" sizes="auto, (max-width: 945px) 100vw, 945px" /></a></p>
238<h4>Download the Data Studio Automatic Update Chrome Extension</h4>
239<p>To automatically refresh your Google Data Studio dashboard to make the report truly real-time add the&nbsp;<a href="https://chrome.google.com/webstore/detail/data-studio-auto-refresh/inkgahcdacjcejipadnndepfllmbgoag/related">auto refresh Chrome browser extension.</a>&nbsp;Once the extension is installed click on the blue circle icon to setup the extension while you have your data studio dashboard open. Turn the Data Studio Auto-Refresh extension to On then choose the Refresh every 1 minute. This will automatically refresh the dashboard every minute. This is useful if you are displaying the real-time Google Analytics Data Studio dashboard on a TV monitor in your office.</p>
240<p><a href="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_auto_refresh.png" rel='magnific'><img loading="lazy" decoding="async" src="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_auto_refresh.png" class="alignnone size-full wp-image-1014" alt="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_auto_refresh.png" width="420" height="381" srcset="https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_auto_refresh.png 420w, https://www.ryanpraski.com/wp-content/uploads/2018/12/google_analytics_real-time_data_studio_dashboard_auto_refresh-300x272.png 300w" sizes="auto, (max-width: 420px) 100vw, 420px" /></a></p>
241<h4>Next Steps: Make Your Real-Time Google Analytics Data Studio Dashboard Even Better</h4>
242<p>You can build on this basic example and make any real-time Google Analytics query you want. To see the dimensions and metrics that are included in the Google Analytics real-time report API check out the documentation here. You can also test your real-time queries using the <a href="https://developers.google.com/apis-explorer/#p/analytics/v3/analytics.data.realtime.get" target="_blank" rel="noopener noreferrer">Google Analytics real-time query explorer here</a>. You can also change the formatting of the Data Studio dashboard to make it even more sleek and useful for your business.</p>
243
244          
245
246        
247
248                          </section><!-- end of .post-entry -->
249
250                          <footer class="article-footer">
251                                                        <div class="post-data">
252                              TAGS: <a class="tags" href="https://www.ryanpraski.com/tag/api/" rel="tag">API</a> - <a class="tags" href="https://www.ryanpraski.com/tag/data-visualization/" rel="tag">Data Visualization</a> - <a class="tags" href="https://www.ryanpraski.com/tag/google-analytics/" rel="tag">Google Analytics</a> - <a class="tags" href="https://www.ryanpraski.com/tag/google-data-studio/" rel="tag">Google Data Studio</a> - <a class="tags" href="https://www.ryanpraski.com/tag/google-sheets/" rel="tag">Google Sheets</a> - <a class="tags" href="https://www.ryanpraski.com/tag/real-time/" rel="tag">Real-Time</a><br />                            </div><!-- end of .post-data -->
253                            
254                            <div class="post-edit"></div>
255                          </footer>
256
257
258                        </div>
259                      </div>
260                    </div>
261                  </div>
262                </article><!-- end of #post-992 -->
263
264                <div class="container">
265                  <div class="row">
266                    <div class="col-lg-8 col-lg-offset-2">
267
268                      
269<div id="disqus_thread"></div>
270
271                    </div>
272                  </div>
273                </div>
274
275              
276              
277         
278   </div><!-- end of #content -->
279
280
281
282   </div><!-- end of wrapper-->
283
284
285
286
287  <!-- +++++ Footer Section +++++ -->
288<footer id="footer">
289<div class="container">
290      <div class="row">
291        <div class="col-lg-4">
292          <div id="text-7" class="widget-wrapper widget_text"><div class="footer-title"><h4>Contact</h4></div>			<div class="textwidget">Ryan Praskievicz</br>
293<a href="https://twitter.com/ryanpraski" target="_blank">@ryanpraski</a></br>
294<a href="http://linkedin.com/in/ryanpraski" target="_blank">Linkedin</a>
295</br>
296<a href="mailto:[email protected]" target="_top">
297[email protected]</a>
298</br>
299(857) 362-8098</div>
300		</div><div id="search-4" class="widget-wrapper widget_search">	<form method="get" class="form-inline" action="https://www.ryanpraski.com/">
301		<div class="form-group">
302		    <label class="sr-only" for="exampleInputEmail2">Email address</label>
303		    <input type="text" class="form-control search-query" name="s" id="search" placeholder="search here &hellip;">
304		  </div>
305		<button type="submit" class="btn btn-default" name="submit" id="searchsubmit" value="Search">Search</button>
306	</form></div>        </div>
307        <div class="col-lg-4">
308          
309		<div id="recent-posts-2" class="widget-wrapper widget_recent_entries">
310		<div class="footer-title"><h4>Recent Posts</h4></div>
311		<ul>
312											<li>
313					<a href="https://www.ryanpraski.com/adobe-launch-page-view-count/">
313Adobe Launch Page View Count Condition to Fire Tag</a>
314									</li>
315											<li>
316					<a href="https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/" aria-current="page">Google Analytics Real-Time Data Studio Dashboard</a>
317									</li>
318											<li>
319					<a href="https://www.ryanpraski.com/drift-google-analytics-tracking/">Drift Chat Interaction Google Analytics Tracking Using GTM</a>
320									</li>
321											<li>
322					<a href="https://www.ryanpraski.com/pardot-iframe-form-tracking-google-analytics/">Pardot iFrame Form Tracking with Google Analytics</a>
323									</li>
324											<li>
325					<a href="https://www.ryanpraski.com/r-heatmap-tutorial-for-google-analytics/">R Heatmap Tutorial for Google Analytics</a>
326									</li>
327					</ul>
328
329		</div>        </div>
330        <div class="col-lg-4">
331          <div id="categories-5" class="widget-wrapper widget_categories"><div class="footer-title"><h4>Categories</h4></div>
332			<ul>
333					<li class="cat-item cat-item-14"><a href="https://www.ryanpraski.com/category/adobe-analytics-api/">Adobe Analytics API</a>
334</li>
335	<li class="cat-item cat-item-37"><a href="https://www.ryanpraski.com/category/adobe-launch/">Adobe Launch</a>
336</li>
337	<li class="cat-item cat-item-17"><a href="https://www.ryanpraski.com/category/career-development/">Career Development</a>
338</li>
339	<li class="cat-item cat-item-16"><a href="https://www.ryanpraski.com/category/conference-event-commentary/">Conference &amp; Event Commentary</a>
340</li>
341	<li class="cat-item cat-item-15"><a href="https://www.ryanpraski.com/category/excel-google-sheets-tips-tricks/">Excel &amp; Google Sheets Tips &amp; Tricks</a>
342</li>
343	<li class="cat-item cat-item-18"><a href="https://www.ryanpraski.com/category/google-analytics/">Google Analytics</a>
344</li>
345	<li class="cat-item cat-item-26"><a href="https://www.ryanpraski.com/category/quantified-self/">Quantified Self</a>
346</li>
347			</ul>
348
349			</div>        </div>
350      
351      </div><!-- /row -->
352    </div><!-- /container -->
353</footer><!-- end #footer -->
354
355
356
357
358<script type="speculationrules">
359{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/stanleywp/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
360</script>
360
361<!-- Begin Inspectlet Embed Code -->
362<script type="text/javascript" id="inspectletjs">
363window.__insp = window.__insp || [];
364__insp.push(['wid', 776998256]);
365(function() {
366function ldinsp(){if(typeof window.__inspld != "undefined") return; window.__inspld = 1; var insp = document.createElement('script'); insp.type = 'text/javascript'; insp.async = true; insp.id = "inspsync"; insp.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cdn.inspectlet.com/inspectlet.js'; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(insp, x); };
367setTimeout(ldinsp, 500); document.readyState != "complete" ? (window.attachEvent ? window.attachEvent('onload', ldinsp) : window.addEventListener('load', ldinsp, false)) : ldinsp();
368})();
369</script>
369
370<!-- End Inspectlet Embed Code -->
370<script id="disqus_count-js-extra">
371var countVars = {"disqusShortname":"ryanpraski"};
372//# sourceURL=disqus_count-js-extra
373</script>
vendor: 1 bytes, line 373
373
374<script id="disqus_count-js" src="https://www.ryanpraski.com/wp-content/plugins/disqus-comment-system/public/js/comment_count.js?ver=3.0.17"></script>
vendor: 1 bytes, line 374
374
375<script id="disqus_embed-js-extra">
376var embedVars = {"disqusConfig":{"integration":"wordpress 3.0.17"},"disqusIdentifier":"992 https://www.ryanpraski.com/?p=992","disqusShortname":"ryanpraski","disqusTitle":"Google Analytics Real-Time Data Studio Dashboard","disqusUrl":"https://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/","postId":"992"};
377//# sourceURL=disqus_embed-js-extra
378</script>
vendor: 1 bytes, line 378
378
379<script id="disqus_embed-js" src="https://www.ryanpraski.com/wp-content/plugins/disqus-comment-system/public/js/comment_embed.js?ver=3.0.17"></script>
vendor: 1 bytes, line 379
379
380<script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://www.ryanpraski.com/wp-includes/js/comment-reply.min.js?ver=7.0.6"></script>
vendor: 1 bytes, line 380
380
381<script id="wp-emoji-settings" type="application/json">
382{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.ryanpraski.com/wp-includes/js/wp-emoji-release.min.js?ver=7.0.6"}}
383</script>
vendor: 1 bytes, line 383
383
384<script type="module">
385/*! This file is auto-generated */
386var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
387//# sourceURL=https://www.ryanpraski.com/wp-includes/js/wp-emoji-loader.min.js
388</script>
388
389
390</body>
391</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.