使用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




