Node.js中如何通过Google Analytics API筛选特定URL获取页面浏览量?
实现Google Analytics特定页面浏览量查询(Node.js)
核心修改方案
要实现根据customUrl筛选特定页面的浏览量,只需在GA API请求的filters参数中添加页面路径匹配规则,并调整返回数据格式为JSON即可。以下是修改后的完整代码及关键说明:
async function getPageViews(customUrl) { try { await jwt.authorize(); const response = await google.analytics("v3").data.ga.get({ auth: jwt, ids: "ga:" + VIEW_ID, "start-date": "2019-01-01", "end-date": "today", dimensions: "ga:pagePath", metrics: "ga:pageviews", // 拼接过滤规则:organic来源 + 精准匹配目标页面路径 filters: `ga:medium==organic;ga:pagePath==${encodeURIComponent(customUrl)}`, }); // 提取并处理浏览量数据 let totalPageViews = 0; if (response.data.rows?.length > 0) { totalPageViews = parseInt(response.data.rows[0][1], 10); } // 返回JSON格式结果 return JSON.stringify({ targetUrl: customUrl, totalPageViews: totalPageViews, timeRange: { start: "2019-01-01", end: new Date().toISOString().split('T')[0] } }); } catch (err) { console.error(err); // 错误场景返回带错误信息的JSON return JSON.stringify({ targetUrl: customUrl, success: false, errorMessage: err.message }); } };
关键修改说明
过滤规则优化
- 用
;连接多个GA过滤条件,新增ga:pagePath==${customUrl}精准匹配目标页面路径 - 用
encodeURIComponent处理URL中的特殊字符(如/、?、&),避免过滤语法报错
- 用
请求参数精简
- 移除
sort和max-results参数:仅查询单个页面时,排序和结果数量限制无意义 - 仅保留
ga:pagePath维度:减少返回数据量,提升请求效率
- 移除
数据处理与返回
- 判断返回的
rows数组是否存在,若存在则提取浏览量数值(GA返回的rows为二维数组,第二个元素对应ga:pageviews指标) - 将结果封装为结构化JSON,包含目标URL、总浏览量和时间范围;错误场景返回带错误信息的JSON
- 判断返回的
可选扩展
如果需要模糊匹配页面(如匹配所有包含某路径前缀的页面),可将过滤规则改为正则匹配:
filters: `ga:medium==organic;ga:pagePath=~${encodeURIComponent(customUrl)}`
例如customUrl传入/blog/,会匹配所有以/blog/开头的页面。
内容的提问来源于stack exchange,提问作者7dz
相关产品推荐
相关产品推荐

