-
Notifications
You must be signed in to change notification settings - Fork 2
/
run_realtime_report.js
131 lines (104 loc) · 4.22 KB
/
run_realtime_report.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
'use strict';
/** This application demonstrates the usage of the Analytics Data API realtime
reporting functionality using service account credentials.
See
https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport
for more information.
Realtime report documentation:
https://developers.google.com/analytics/devguides/reporting/data/v1/realtime-basics
For more information on service accounts, see
https://cloud.google.com/iam/docs/understanding-service-accounts
The following document provides instructions on setting service account
credentials for your application:
https://cloud.google.com/docs/authentication/production
In a nutshell, you need to:
1. Create a service account and download the key JSON file.
https://cloud.google.com/docs/authentication/production#creating_a_service_account
2. Provide service account credentials using one of the following options:
- set the GOOGLE_APPLICATION_CREDENTIALS environment variable, the API
client will use the value of this variable to find the service account key
JSON file.
https://cloud.google.com/docs/authentication/production#setting_the_environment_variable
OR
- manually pass the path to the service account key JSON file to the API client
by specifying the keyFilename parameter in the constructor.
https://cloud.google.com/docs/authentication/production#passing_the_path_to_the_service_account_key_in_code
3. Uncomment `propertyId` variable in main() function below and specify the
value of the property id you want to access.
4. Run the following commands from the current directory in order to install
dependencies and run the sample app:
npm install
cd ..
node samples/runRealtimeReport.js
*/
function main(propertyId = 'YOUR-GA4-PROPERTY-ID') {
// [START analyticsdata_run_realtime_report]
/**
* TODO(developer): Uncomment this variable and replace with your GA4
* property ID before running the sample.
*/
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Creates a client.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a realtime report on a Google Analytics 4 property.
async function runRealtimeReport() {
const [response] = await analyticsDataClient.runRealtimeReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'country',
},
],
metrics: [
{
name: 'activeUsers',
},
],
});
printRunReportResponse(response);
}
runRealtimeReport();
// Prints results of a runReport call.
function printRunReportResponse(response) {
//[START analyticsdata_print_run_report_response_header]
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
//[END analyticsdata_print_run_report_response_header]
// [START analyticsdata_print_run_report_response_rows]
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
// [END analyticsdata_print_run_report_response_rows]
}
// [END analyticsdata_run_realtime_report]
}
process.on('unhandledRejection', err => {
console.error(err.message);
process.exitCode = 1;
});
main(...process.argv.slice(2));