<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Google analytics - authorization and pagination in Connectivity &amp; Data Prep</title>
    <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013174#M1483</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Karl!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 11 Feb 2016 13:49:13 GMT</pubDate>
    <dc:creator>rubenmarin</dc:creator>
    <dc:date>2016-02-11T13:49:13Z</dc:date>
    <item>
      <title>Google analytics - authorization and pagination</title>
      <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013172#M1481</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I've been struggling some time retrieving data from google analytics using the REST connector, the posts from &lt;SPAN class="j-post-author"&gt;&lt;STRONG&gt;&lt;A href="https://community.qlik.com/people/bmw"&gt;bmw&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; and &lt;SPAN class="j-post-author"&gt;&lt;STRONG&gt;&lt;A href="https://community.qlik.com/people/Fredberg"&gt;Fredberg&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; in the &lt;A _jive_internal="true" href="https://community.qlik.com/message/925630#925630"&gt;REST CONNECTOR&amp;nbsp; locate the Authorization token&lt;/A&gt; thread was a great help but using pagination with the 'WITH CONNECTION' clause returns this error (this is documented in the REST connector help):&lt;/P&gt;&lt;P&gt;"You cannot use the selected pagination type and the 'WITH CONNECTION' statement at the same time. Please set 'Pagination type' to None on the connection dialog."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've avoided it in QlikView inserting the authorization code inside the connection string, so I don't require the WITH CONNECTION clause:&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14551902179544150" jivemacro_uid="_14551902179544150"&gt;
&lt;P&gt;CUSTOM CONNECT TO "Provider=QvRestConnector.exe; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url=$(vURL); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeout=30;method=GET; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoDetectResponseType=true; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyGenerationStrategy=-1; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryHeaders=Authorization=Bearer $(vAccessToken);&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useWindowsAuthentication=false;useCertificate=No;certificateStoreLocation=CurrentUser; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; certificateStoreName=My; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PaginationType=NextToken;NextTokenFieldName=nextLink;IsNextTokenFieldNameHeader=1;NextTokenFieldPath=root/nextLink;IsNextTokenFieldPathHeader=;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XUserId=ReGGaHC;XPassword=MUKTRHB;";&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I can't apply the same solution in Sense as the connection string is fixed when you create the connection and the use of WITH CONNECTION is required to dynamically set the access token.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So far I know scheduled reloads will require to dynamically assign the refreshed access token, meanwhile retrieving large sets of data requires pagination. Is there any way that allows scheduled reloads and pagination with Google Analytics in Sense? or I'm forced to use legacy mode?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Feb 2016 11:51:34 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013172#M1481</guid>
      <dc:creator>rubenmarin</dc:creator>
      <dc:date>2016-02-11T11:51:34Z</dc:date>
    </item>
    <item>
      <title>Re: Google analytics - authorization and pagination</title>
      <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013173#M1482</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As Björn wrote in &lt;A href="https://community.qlik.com/message/966198"&gt;Re: REST CONNECTOR locate the Authorization token&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;When working with APIs you cannot hardcode parameters in the URL when setting up the connection, basically because not all parameters may be known at this stage.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;To get around this I simply created two connections using the REST Connector, one for GET (LIB: Google Analytics API) and one for POST (LIB: Google Authorization) and used an open JSON server at jsonplaceholder.typicode.com wheen creating the connections (you cannot alter the Method GET/POST using WITH CONNECTION). I then followed the same process as above, and used WITH CONNECTION to alter the LIB settings and pointed the URL to the entry-points for Google APIs. Here's a small example script for Sense:&lt;/P&gt;




&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This is how I implemented pagination.&lt;/P&gt;&lt;P&gt;I request 1 date at a time and use a combination of max-results and start-index to paginate the results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14551979179201050" jivemacro_uid="_14551979179201050"&gt;
&lt;P&gt;SET vMetrics = 'ga:transactions';&lt;/P&gt;
&lt;P&gt;SET vDimensions = 'ga:date,ga:transactionId,ga:sourceMedium,ga:campaign,ga:deviceCategory,ga:landingPagePath,ga:searchUsed';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;SET vNumRequest = 0;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;CALL idList&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;// This loops through the lists of ids&lt;/P&gt;
&lt;P&gt;FOR iterID = 0 to noofrows('idList')-1&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let vId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = peek('ga_id',iterID,'idList');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let vStartDate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = peek('start_date',iterID,'idList');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let vEndDate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = peek('end_date',iterID,'idList');&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vFK_index = 0;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let vDays = NUM(vEndDate) - NUM(vStartDate);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR d = 0 to vDays&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let vDate = Date(NUM(vStartDate + d),'YYYY-MM-DD');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRACE date: $(vDate) id: $(vId);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL GetTotalAndHeaders (vDate)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL GetResults (vDate)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXT d&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL ResultsToQVD&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;NEXT iterID&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;DROP TABLE idList;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;TRACE Total requests $(vNumRequest);&lt;/P&gt;



&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1455197695299122" jivemacro_uid="_1455197695299122"&gt;
&lt;P&gt;SUB GetRefreshToken&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; IF vTokenExpires &amp;lt;= now() THEN&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRACE Refreshing TOKEN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vClient_id = 'Client_id';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vClient_secret = 'Client_secret';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vRefresh_token = 'Refresh_token';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vRequestBody ='';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; 'grant_type=refresh_token';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;client_id=' &amp;amp; '$(vClient_id)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;client_secret=' &amp;amp; '$(vClient_secret)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;refresh_token=' &amp;amp; '$(vRefresh_token)';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIB CONNECT TO 'Google Authorization';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_token:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "access_token",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "token_type",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "expires_in"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM JSON (wrap on) "root"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH CONNECTION (&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://www.googleapis.com/oauth2/v3/token" rel="nofollow"&gt;https://www.googleapis.com/oauth2/v3/token&lt;/A&gt;&lt;SPAN&gt;",&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTPHEADER "content-type" "application/x-www-form-urlencoded",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BODY "$(vRequestBody)"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vExpiresIn = peek('expires_in',0,'access_token');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vAccessToken = peek('access_token',0,'access_token');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vTokenExpires = timestamp(now() + ($(vExpiresIn))/86400);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRACE $(vAccessToken);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vNumRequest = $(vNumRequest) + 1; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; EndIf&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;ENDSUB&lt;/P&gt;



&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14551973950493905" jivemacro_uid="_14551973950493905"&gt;
&lt;P&gt;SUB idList&lt;/P&gt;
&lt;P&gt;// Create a list of ids and date to search for&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; idList:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '9999999999'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as ga_id,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '2013-01-01'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as start_date,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '2013-12-31'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as end_date&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AutoGenerate(1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '7777777777'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as ga_id,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '2013-01-01'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as start_date,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '2013-12-31'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as end_date&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AutoGenerate(1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;ENDSUB&lt;/P&gt;



&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14551972317966786 jive_text_macro" jivemacro_uid="_14551972317966786"&gt;
&lt;P&gt;SUB GetTotalAndHeaders (iterDate)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; //LET vDate = Date($(iterDate));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody ='';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; 'ids=ga:' &amp;amp; $(vId);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;start-date=' &amp;amp; '$(iterDate)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;end-date=' &amp;amp; '$(iterDate)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;metrics=' &amp;amp; '$(vMetrics)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;dimensions=' &amp;amp; '$(vDimensions)';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;start-index=1';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;max-results=1';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;sort=ga:transactionId,-ga:date';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; LET vURL&amp;nbsp; = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://www.googleapis.com/analytics/v3/data/ga" rel="nofollow"&gt;https://www.googleapis.com/analytics/v3/data/ga&lt;/A&gt;&lt;SPAN&gt;?' &amp;amp; '$(vRequestBody)';&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; CALL GetRefreshToken;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LIB CONNECT TO 'Google Analytics API';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RestConnectorTotalTable:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; SQL SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "totalResults",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_root",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "start-date",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "end-date",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ids",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dimensions",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "start-index",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "max-results",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_query",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_query",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "@Value",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_metrics"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "metrics" FK "__FK_metrics" ArrayValueAlias "@Value")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "query" PK "__KEY_query" FK "__FK_query"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "profileId",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "accountId",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "webPropertyId",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "internalWebPropertyId",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "profileName",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "tableId",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_profileInfo"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "profileInfo" FK "__FK_profileInfo"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "columnType",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dataType",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_columnHeaders"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "columnHeaders" FK "__FK_columnHeaders"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ga:sessions",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_totalsForAllResults"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "totalsForAllResults" FK "__FK_totalsForAllResults"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_rows",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_rows",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "@Value" AS "@Value_u0",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_rows_u0"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "rows" FK "__FK_rows_u0" ArrayValueAlias "@Value_u0")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "rows" PK "__KEY_rows" FK "__FK_rows")&lt;/P&gt;
&lt;P&gt;&amp;nbsp; FROM JSON (wrap on) "root" PK "__KEY_root"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH CONNECTION (&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL "$(vURL)",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTPHEADER "Authorization" "Bearer $(vAccessToken)"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vNumRequest = $(vNumRequest) + 1;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; root:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [totalResults] AS [totalResults]&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT RestConnectorTotalTable&lt;/P&gt;
&lt;P&gt;&amp;nbsp; WHERE NOT IsNull([__KEY_root]);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vTotalResults = peek('totalResults',0,'root');&lt;/P&gt;
&lt;P&gt;&amp;nbsp; TRACE $(vTotalResults);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; [columnHeaders]:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&amp;nbsp;&amp;nbsp;&amp;nbsp; Mid([name],4) AS [name],&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowNo() AS RowNumber&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT RestConnectorTotalTable&lt;/P&gt;
&lt;P&gt;&amp;nbsp; WHERE NOT IsNull([__FK_columnHeaders]);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE RestConnectorTotalTable;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE root;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;END SUB&lt;/P&gt;



&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14551984125907263" jivemacro_uid="_14551984125907263" modifiedtitle="true"&gt;
&lt;P&gt;SUB GetResults (iterDate)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; SET vStartIndex = 1;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; SET vMaxResults = 10000;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody ='';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; 'ids=ga:' &amp;amp; $(vId);&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;start-date=' &amp;amp; '$(iterDate)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;end-date=' &amp;amp; '$(iterDate)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;metrics=' &amp;amp; '$(vMetrics)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;dimensions=' &amp;amp; '$(vDimensions)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;start-index=' &amp;amp; '$(vStartIndex)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;max-results=' &amp;amp; '$(vMaxResults)';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vRequestBody = vRequestBody &amp;amp; '&amp;amp;sort=ga:transactionId,-ga:date';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; for vStartIndex = 1 to $(vTotalResults)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; TRACE "StartIndex: " $(vStartIndex);&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; LET vURL&amp;nbsp; = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://www.googleapis.com/analytics/v3/data/ga" rel="nofollow"&gt;https://www.googleapis.com/analytics/v3/data/ga&lt;/A&gt;&lt;SPAN&gt;?' &amp;amp; '$(vRequestBody)';&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; CALL GetRefreshToken&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LIB CONNECT TO 'Google Analytics API';&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; TRACE FKindex $(vFK_index);&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; RestConnectorResultsTable:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD [@Value_u0] AS Value,&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [__FK_rows_u0] + $(vFK_index) AS [__FK_rows_u0];&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; SQL SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "kind",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "itemsPerPage",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "selfLink",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "containsSampledData",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_root",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "start-date",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "end-date",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ids",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dimensions",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "start-index",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "max-results",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_query",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_query",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "@Value",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_metrics"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "metrics" FK "__FK_metrics" ArrayValueAlias "@Value")&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "query" PK "__KEY_query" FK "__FK_query"),&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "profileId",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "accountId",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "webPropertyId",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "internalWebPropertyId",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "profileName",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "tableId",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_profileInfo"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "profileInfo" FK "__FK_profileInfo"),&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "columnType",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dataType",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_columnHeaders"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "columnHeaders" FK "__FK_columnHeaders"),&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ga:sessions",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_totalsForAllResults"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "totalsForAllResults" FK "__FK_totalsForAllResults"),&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__KEY_rows",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_rows" ,&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "@Value" AS "@Value_u0",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "__FK_rows_u0" AS&amp;nbsp; "__FK_rows_u0"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "rows" FK "__FK_rows_u0" ArrayValueAlias "@Value_u0")&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM "rows" PK "__KEY_rows" FK "__FK_rows")&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; FROM JSON (wrap on) "root" PK "__KEY_root"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH CONNECTION (&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL "$(vURL)",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTPHEADER "Authorization" "Bearer $(vAccessToken)"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vStartIndex = $(vStartIndex) + $(vMaxResults) - 1;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vNumRequest = $(vNumRequest) + 1;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; NEXT vStartIndex;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET vFK_index = vFK_index + vTotalResults;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;ENDSUB &lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1455198061694518" jivemacro_uid="_1455198061694518"&gt;
&lt;P&gt;SUB ResultsToQVD (id)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; TRACE ResultsToQVD;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; [rows]:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&amp;nbsp; [Value],&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [__FK_rows_u0],&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if([__FK_rows_u0]=peek([__FK_rows_u0]),peek(RowNumber)+1,1) as RowNumber&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT RestConnectorResultsTable&lt;/P&gt;
&lt;P&gt;&amp;nbsp; WHERE NOT IsNull([__FK_rows_u0]);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LEFT JOIN (rows)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowNumber &lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT columnHeaders&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE RestConnectorResultsTable;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE columnHeaders;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Flags:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Generic&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [__FK_rows_u0],&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF(name='date',Date(Date#(Value,'YYYYMMDD')),Value) AS Value&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT rows;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MergeTable:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD distinct [__FK_rows_u0]&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT rows;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP FIELD RowNumber;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE rows;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; FOR i = NoOfTables()-1 to 0 STEP -1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LET vTable=TableName($(i));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF WildMatch('$(vTable)', 'Flags.*') THEN&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEFT JOIN (MergeTable) LOAD * RESIDENT&amp;nbsp;&amp;nbsp; [$(vTable)];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DROP TABLE&amp;nbsp; [$(vTable)];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF&lt;/P&gt;
&lt;P&gt;&amp;nbsp; NEXT i&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP FIELD [__FK_rows_u0];&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; TRACE SAVING TO FILE GA_DATA_REST_$(vId)_$(vStartDate)_$(vEndDate).qvd;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ResultTable:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOAD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(vId) AS id&lt;/P&gt;
&lt;P&gt;&amp;nbsp; RESIDENT MergeTable&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ORDER BY date ASC;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE MergeTable;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; store ResultTable into [lib://QVDs/GA REST/HISTORY/GA_DATA_REST_$(vId)_$(vStartDate)_$(vEndDate).qvd];&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DROP TABLE ResultTable;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;ENDSUB&lt;/P&gt;



&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Feb 2016 13:42:45 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013173#M1482</guid>
      <dc:creator />
      <dc:date>2016-02-11T13:42:45Z</dc:date>
    </item>
    <item>
      <title>Re: Google analytics - authorization and pagination</title>
      <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013174#M1483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Karl!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Feb 2016 13:49:13 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013174#M1483</guid>
      <dc:creator>rubenmarin</dc:creator>
      <dc:date>2016-02-11T13:49:13Z</dc:date>
    </item>
    <item>
      <title>Re: Google analytics - authorization and pagination</title>
      <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013175#M1484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm attempting to implement this approach as the logic in the online Qlik guides weren't giving me reliable data. I'm a bit stuck, should the script be used in the order that you have stated above?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ralph&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Apr 2016 12:21:04 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013175#M1484</guid>
      <dc:creator>ralph_graham</dc:creator>
      <dc:date>2016-04-13T12:21:04Z</dc:date>
    </item>
    <item>
      <title>Re: Google analytics - authorization and pagination</title>
      <link>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013176#M1485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Karl,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks! A very nice solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, I don't get it to work in QlikView (I do get it to work in Sense). I get an error, Custom read failed on RestConnectorTotalTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The only thing that I thought I needed to edit was the connection string so I guess the problem is in that area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The GetRefreshtoken and idList routines are working properly. In the routines GetTotalAndHeaders and GetResults I replaced:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;LIB CONNECT TO 'Google Analytics API';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;with&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CUSTOM CONNECT TO "Provider=QvRestConnector.exe;&lt;/P&gt;&lt;P&gt;&amp;nbsp; url=$(vURL);&lt;/P&gt;&lt;P&gt;&amp;nbsp; timeout=30;&lt;/P&gt;&lt;P&gt;&amp;nbsp; method=GET;&lt;/P&gt;&lt;P&gt;&amp;nbsp; autoDetectResponseType=true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; keyGenerationStrategy=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; useWindowsAuthentication=false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; useCertificate=No;&lt;/P&gt;&lt;P&gt;&amp;nbsp; certificateStoreLocation=CurrentUser;&lt;/P&gt;&lt;P&gt;&amp;nbsp; certificateStoreName=My;&lt;/P&gt;&lt;P&gt;&amp;nbsp; XUserId=JbHIHeD;&lt;/P&gt;&lt;P&gt;&amp;nbsp; XPassword=caEbPWD;";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anybody sees something that doesn't add up? I'm trying for hours now but I don't get it to work. :-S&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope someone can point me in the right direction, thanks in advance!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Stefan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Oct 2016 09:52:31 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Connectivity-Data-Prep/Google-analytics-authorization-and-pagination/m-p/1013176#M1485</guid>
      <dc:creator>skoppe</dc:creator>
      <dc:date>2016-10-03T09:52:31Z</dc:date>
    </item>
  </channel>
</rss>

