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


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


11192
2018-05-08 08:15


起源



答案:


正如Brad非常伤心,Node没有任何内容......所以我在最近几天编写了一个为此定制的nodejs模块,并将其发布在NPM上: 节点街

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



2
2018-04-03 10:29



这真的很有意思...我只是把这些触摸放在一个模块上,这个周末完全一样!我一直在生产中使用它的一个版本,但我想在将它丢弃之前我会稍微清理它。 - Brad
@Brad:模块越多,用户越好:) - red
哈,也许吧。但就目前而言,我认为你的需求很好。干得好! - Brad
@JoshLeaves漂亮的图书馆,您是否也可以在路线中的某个地方(而非中间件)跟踪事件?我试过像ga(...)(req,res,function(){})之类的东西;确实发出请求,但它没有出现在GA中 - forste
@forste:你可以在一条路线内召唤它,这是一个例子: gist.github.com/joshleaves/5669653 - red


答案:


正如Brad非常伤心,Node没有任何内容......所以我在最近几天编写了一个为此定制的nodejs模块,并将其发布在NPM上: 节点街

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



2
2018-04-03 10:29



这真的很有意思...我只是把这些触摸放在一个模块上,这个周末完全一样!我一直在生产中使用它的一个版本,但我想在将它丢弃之前我会稍微清理它。 - Brad
@Brad:模块越多,用户越好:) - red
哈,也许吧。但就目前而言,我认为你的需求很好。干得好! - Brad
@JoshLeaves漂亮的图书馆,您是否也可以在路线中的某个地方(而非中间件)跟踪事件?我试过像ga(...)(req,res,function(){})之类的东西;确实发出请求,但它没有出现在GA中 - forste
@forste:你可以在一条路线内召唤它,这是一个例子: gist.github.com/joshleaves/5669653 - red


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

它真的很棒,而且非常容易使用。


7
2018-04-09 13:00





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

我不相信Node还有什么东西(如果我错了,请纠正我!),但你应该能够轻松地调整现有的PHP类来进行日志服务器端:

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

您可以在ga.php中查看请求跟踪GIF的网址的构建方式。将ga.php翻译成JS,你就定了。

$utmGifLocation = "http://www.google-analytics.com/__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"]);

2
2018-06-16 14:35





安装通用分析

npm install universal-analytics --save

在您的路线文件中,需要该模块。 (更换 process.env.GA_ACCOUNT 像'UA-12345678-1'这样的字符串

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

现在,在端点功能中,您可以跟踪综合浏览量。 (更换 request.url 与当前的url字符串一样 '/api/users/1'

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

阅读 文件 在UA上获取有关此模块的更多信息。


2
2017-09-29 03:42





我尝试了node-ga,但没有让事件跟踪工作。 nodealytics 做了这个工作。


1
2018-05-29 08:58





看到 核心报告API客户端库和示例代码(v3)

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


1
2018-01-30 12:01





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

这是脚本部分:

'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));
  });
}

0
2017-07-16 22:48