如何通过Google Analytics API在Google Sheets获取GA电商购物行为分析数据?
我来帮你一步步搞定这些电商核心指标的获取和计算——你提到的那些无法直接拉取的指标,其实都可以通过GA API提供的基础维度和指标组合计算出来,加购去重的问题也有明确的处理方案。
一、自定义核心指标的计算方法
这些指标都需要基于会话级维度(比如UA的ga:sessionId,GA4对应ga4:sessionId)和基础指标来推导:
1. 有加购会话(Sessions with Add to Cart)
- UA(Universal Analytics):请求维度
ga:sessionId+ 指标ga:productAddsToCart,筛选出productAddsToCart > 0的会话ID,去重后计数就是有加购的会话数。 - GA4:请求维度
ga4:sessionId,过滤条件eventName == add_to_cart,去重sessionId后计数。
2. 无加购会话(No Cart Addition)
直接用总会话数减去「有加购会话数」即可:无加购会话数 = 总会话数 - 有加购会话数
3. 有结账会话(Sessions with Check-Out)
- UA:请求维度
ga:sessionId+ 指标ga:checkouts,筛选checkouts > 0的会话ID,去重计数。 - GA4:请求维度
ga4:sessionId,过滤条件eventName == begin_checkout,去重sessionId后计数。
4. 购物车弃购率(Cart Abandonment)
计算逻辑是:有加购但未进入结账流程的会话占比购物车弃购率 = (有加购会话数 - 有结账会话数) / 有加购会话数 * 100%
5. 结账弃购率(Check-Out Abandonment)
需要先获取「完成购买的会话数」(即产生交易的会话),再计算:
- 完成购买会话数:UA用
ga:sessionId+ga:transactions筛选transactions>0去重;GA4用sessionId+eventName == purchase去重计数。 - 结账弃购率 = (有结账会话数 - 完成购买会话数) / 有结账会话数 * 100%
二、会话级去重加购次数的处理
你提到的Product Add to Carts和Quantity Add to Cart是累计值,要统计会话内的唯一加购次数(比如同一个会话加购同一商品多次只算1次),可以分场景处理:
场景1:统计有多少个会话发生过加购(不管加购次数)
就是前面提到的「有加购会话数」,直接对sessionId去重即可。
场景2:统计每个会话内加购不同商品的数量/整体商品的会话级加购次数
- UA:请求维度
ga:sessionId+ga:productSKU(或ga:productName)+ 指标ga:productAddsToCart,然后在Sheets中用UNIQUE函数对每个sessionId下的商品SKU去重,再统计每个会话的去重商品数。 - GA4:请求维度
ga4:sessionId+ga4:itemId,过滤eventName == add_to_cart,同样用去重逻辑处理。
如果要统计每个商品被多少个不同会话加购过,UA可以用ga:productSKU+ga:uniqueEvents,过滤ga:eventAction == add_to_cart;GA4用ga4:itemId+ga4:uniqueUsers(或ga4:uniqueEvents)过滤eventName == add_to_cart。
三、在Google Sheets中实现的具体操作
方法1:用内置GOOGLEANALYTICS函数+Sheets公式
以UA为例,假设你的GA视图ID是ga:123456789,时间范围是最近30天:
- 总会话数:
=GOOGLEANALYTICS("ga:123456789", "ga:sessions", TODAY()-30, TODAY()) - 有加购会话数:
=COUNTUNIQUE(QUERY(GOOGLEANALYTICS("ga:123456789", "ga:sessionId,ga:productAddsToCart", TODAY()-30, TODAY()), "SELECT Col1 WHERE Col2 > 0")) - 有结账会话数:
=COUNTUNIQUE(QUERY(GOOGLEANALYTICS("ga:123456789", "ga:sessionId,ga:checkouts", TODAY()-30, TODAY()), "SELECT Col1 WHERE Col2 > 0")) - 完成购买会话数:
=COUNTUNIQUE(QUERY(GOOGLEANALYTICS("ga:123456789", "ga:sessionId,ga:transactions", TODAY()-30, TODAY()), "SELECT Col1 WHERE Col2 > 0"))
之后就可以用这些数值计算弃购率和无加购会话数。
方法2:用Google Apps Script调用GA API
如果数据量较大或者需要更灵活的处理,推荐用Apps Script:
- 在Sheets中打开「扩展程序」→「Apps脚本」
- 启用「Analytics Reporting API」(UA)或「Google Analytics Data API」(GA4)
- 编写脚本批量获取sessionId和对应指标,然后在脚本内完成去重、过滤和计算,最后写入Sheets。
比如UA的简化示例代码:
function getCartAnalytics() { var viewId = 'ga:123456789'; var startDate = '30daysAgo'; var endDate = 'today'; // 获取有加购的会话ID var addToCartSessions = AnalyticsReporting.Reports.batchGet({ reportRequests: [{ viewId: viewId, dateRanges: [{startDate: startDate, endDate: endDate}], dimensions: [{name: 'ga:sessionId'}], metrics: [{expression: 'ga:productAddsToCart'}], filtersExpression: 'ga:productAddsToCart > 0' }] }); // 去重会话ID并计数 var uniqueSessions = new Set(); addToCartSessions.reports[0].data.rows.forEach(row => { uniqueSessions.add(row.dimensions[0]); }); // 写入Sheets SpreadsheetApp.getActiveSheet().getRange('A1').setValue('有加购会话数'); SpreadsheetApp.getActiveSheet().getRange('B1').setValue(uniqueSessions.size); }
注意事项
- 如果使用GA4,所有维度指标需要替换为GA4的命名规则(比如
ga4:sessions、ga4:sessionId、eventName过滤)。 - 确保你的Google账号有对应GA视图/资源的访问权限,并且在Sheets或Apps Script中授权了GA API的访问权限。
内容的提问来源于stack exchange,提问作者Jeremy

