You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过App Script将Google Analytics API batchGet返回数据写入Google表格?

解决GA API数据写入Google表格的问题

没问题,我帮你把这段脚本补全,让它能把获取到的GA数据顺利写入Sheet1里。你已经完成了最关键的API请求部分,接下来只需要解析返回的响应,把数据整理成表格需要的格式,再写入就行。

首先,我们得先解析response里的报表数据——GA的batchGet返回结构里,报表内容在response.reports[0].data下面。然后要把维度和指标对应起来,还要加上友好的表头,这样表格里的数据才清晰易读。

补全后的完整脚本如下:

function get_ga(){ 
  var start_date='2019-04-01'; 
  var end_date='2019-04-15'; 
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName("Sheet1"); 
  
  // 清空表格原有数据(可选,避免重复写入,不需要的话可以删掉这行)
  sheet.clearContents();

  var request = { 
    "reportRequests": [ { 
      "viewId": '26676016', 
      "dateRanges": [{"startDate": start_date, "endDate": end_date}], 
      "metrics": [{"expression": "ga:transactionRevenue"}, {"expression":"ga:transactions"},{"expression":"ga:sessions"}], 
      "dimensions" : [{"name": "ga:sourceMedium"},{"name":"ga:campaign"}] 
    } ], 
    "useResourceQuotas": true, 
  }; 
  
  var response = AnalyticsReporting.Reports.batchGet(request);
  // 注意:这里不需要用JSON.stringify转换请求体,batchGet方法直接接受JS对象参数,之前的写法会导致请求失败哦

  // 解析报表核心数据
  var report = response.reports[0];
  var headerNames = [];
  
  // 提取维度表头,去掉ga:前缀让表头更友好
  report.columnHeader.dimensions.forEach(function(dim) {
    headerNames.push(dim.replace('ga:', ''));
  });
  
  // 提取指标表头,同样去掉ga:前缀
  report.columnHeader.metricHeader.metricHeaderEntries.forEach(function(metric) {
    headerNames.push(metric.name.replace('ga:', ''));
  });
  
  // 准备要写入表格的数据集,先把表头放进去
  var rows = [headerNames]; 
  var dataRows = report.data.rows;
  
  if (dataRows) {
    // 遍历每一行数据,把维度和指标合并成一行
    dataRows.forEach(function(row) {
      var rowData = row.dimensions; // 先加维度数据
      row.metrics.forEach(function(metric) {
        rowData = rowData.concat(metric.values); // 再追加指标数据
      });
      rows.push(rowData);
    });
  } else {
    // 如果没有获取到数据,在表格里提示一下
    rows.push(['未获取到符合条件的数据']);
  }
  
  // 把整理好的数据一次性写入表格,从A1单元格开始
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
  SpreadsheetApp.getUi().alert('数据已成功写入表格!');
}

我给你划几个关键细节:

  • 修正了batchGet的调用:不需要把request转成JSON字符串,这个方法直接接受JavaScript对象作为参数,之前的写法会导致请求失败。
  • 清空原有数据:加了sheet.clearContents()避免重复写入,如果你需要追加数据可以删掉这行。
  • 表头优化:把维度和指标名称里的ga:前缀去掉,让表格表头更简洁易懂。
  • 高效写入:用setValues一次性写入整个二维数组,比逐行写入效率高很多,尤其数据量大的时候更明显。
  • 异常提示:如果没有返回数据,会在表格里显示提示,避免脚本报错中断。

你把这段完整脚本替换原来的代码,第一次运行时完成GA和Google表格的授权,就能看到数据自动写入Sheet1啦。

内容的提问来源于stack exchange,提问作者Berkay Songur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:21:01