使用Node.js获取Google Analytics数据(无需OAuth身份验证)

大家好,
我是开发团队野生队的成员 Mandai。

除了我的日常工作之外,我还(偶尔)为网络营销团队工作,该团队由公司各部门的人员组成,我的主要工作是查看 Google Analytics 数据,然后说:“它是在上升还是在下降?”

我正在使用 Node.js 通过 API 从 Google Analytics 获取数据并以类似的方式进行分析,但即使创建一个基本程序也是一项繁重的工作,所以我想与您分享一个示例程序。

我还没有写正文,但我感觉我会把更多的篇幅用于介绍与 Google 帐户相关的设置,而不是程序本身。


 

Google 帐户设置

 

创建项目

https://console.developers.google.com创建一个项目
,或者如果您已经有一个项目并且对其满意,则可以使用它。

 

启用 Google API。

在“API 管理器”的“库”中启用 Google Analytics Reporting API。
但是,此页面上没有相关链接,因此您需要在搜索框中输入“analytics reporting”或类似内容进行查找。

 

使用您的凭据创建服务帐户密钥。

启用 API 后,点击左侧的“凭据”链接创建凭据。

您将创建的凭证类型是“服务帐户密钥”。

给服务账号起个合适的名字,并将角色设置为“项目查看者”。
(其实我对这些设置不太有把握,如果您有更好的角色设置方案,请告诉我!)

“密钥类型”将以 JSON 格式创建。
您将下载一个包含身份验证信息的 JSON 文件,请妥善保管。
稍后您将使用它。

 

在 Google Analytics(分析)端注册您创建的服务帐号密钥

我以为创建了一个可以访问启用了 Google Analytics Reporting API 的项目的服务帐户后就万事俱备了,但实际上我还需要配置最后一个步骤。

https://analytics.google.com页面,您需要进入管理界面,并在用户管理中注册要从中检索数据的视图的“服务帐户密钥”。

这里有个问题。

即使创建服务帐户的用户拥有查看权限,是否也需要注册服务帐户密钥?

答案当然是肯定的。

我认为 Google 帐户权限结构存在问题,但至少从 Google Analytics 来看,服务帐户密钥似乎被识别为属于创建该密钥的用户以外的其他用户。

因此,我们将重新注册具有“查看和分析”权限的服务账号密钥。

注册时需要电子邮件地址,但您之前下载的服务帐户密钥的 JSON 文件包含一个名为“client_email”的键,因此该值将是您的电子邮件地址。

既然您已经打开了 Google Analytics(分析)屏幕,请花点时间记下您要从中检索数据的视图 ID。

至此,Google Analytics(分析)设置完成。

 

Node.js 配置

从 npm 安装名为 googleapis 的软件包。
顾名思义,这是一个用于访问 Google API 的软件包,由 Google 开发。

npm install googleapis

 

如果您只想与 Google Analytics Reporting API 通信,则不需要其他软件包。

 

获取数据

这种酱汁不值得大肆宣传,所以请先仔细看看。

var google = require('googleapis'); var analytics = google.analyticsreporting('v4'); // 指定服务帐户密钥的 JSON 文件 var credential = require('./xxxxxxxx.json'); // 指定要从中检索数据的 Google Analytics(分析)视图 ID var viewId = 'XXXXXXXXX'; // 目标数据周期 var startDate = "xxxx-xx-xx"; var endDate = "xxxx-xx-xx"; var jwtClient = new google.auth.JWT(credential.client_email, null, credential.private_key, ["https://www.googleapis.com/auth/analytics.readonly"], null); jwtClient.authorize((error, tokens) => { if (error){ console.log(error); return; } analytics.reports.batchGet({ resource: { "reportRequests": [ { "dateRanges": [ { "startDate": startDate, "endDate": endDate } ], "viewId": viewId, "dimensions": [ { "name": "ga:pagePath" } ] } ] }, auth: jwtClient }, (error, response) => { if (error){ console.log(error); } console.log(response); }) });

 

测试需要进行四项更改:

  • 服务帐户密钥 JSON 文件路径
  • 查看 ID
  • 目标数据期的起始日期
  • 目标数据期结束日期

只需更改上述内容,即可汇总目标期间每个 URL 的访问次数,并获得相关数据。

正如我所料,资料来源不太好,但他们确实花了很多篇幅介绍与谷歌帐户相关的设置。

 
就这样。

如果您觉得这篇文章有用,请点击【点赞】!
1
加载中...
1票,平均分:1.00/11
1,667
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但我也很荣幸能够从事其他各种工作,包括市场营销。
我在Beyond中的肖像权采用CC0协议。