在 Google App Script 中访问 ga_sessions_*

Posted

技术标签:

【中文标题】在 Google App Script 中访问 ga_sessions_*【英文标题】:Accessing ga_sessions_* in Google App Script 【发布时间】:2021-11-24 15:30:30 【问题描述】:

我正在尝试通过应用脚本中的 BigQuery API 访问 Google Analytics(分析)数据。 在我的函数中,我创建了查询:

  var projectId = 'bigqueryanalytics360';
  var query = "\
      SELECT * \
      FROM `bigqueryanalytics360.dataset.ga_sessions_*` AS ga_sessions \
      LIMIT 5 \
  "
  var request = 
    useLegacySql: false,
    query: query,
  

但是,当我使用此查询发出请求时,我没有得到任何数据。另一方面,当我指定日期bigqueryanalytics360.dataset.ga_sessions_20211123 时,我得到了预期的数据。

我相信* 在这里弄乱了查询,我想我需要像在正则表达式中那样转义它,但我不确定如何。

如何自行运行

    访问公开可用的数据集here 创建应用脚本 创建一个文件以通过 API (link) 访问 BigQuery 数据。而不是这部分:
var projectId = 'XXXXXXXX';

var request = 
    query: 'SELECT TOP(word, 300) AS word, COUNT(*) AS word_count ' +
      'FROM publicdata:samples.shakespeare WHERE LENGTH(word) > 10;'
  ;

这样写:

var projectId = 'your-project-id';
var query = "\
SELECT DISTINCT visitId \
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` \
LIMIT 10 \
"

var request = 
  useLegacySql: false,
  query: query,
  

确保您:

已启用 BigQuery API (link) 启用 Google API 范围 (link) 通过旧版编辑器启用 BigQuery API(使用旧版编辑器 >> 资源 >>​​ 高级 Google 服务... >> BigQuery API)

你知道如何解决它吗?

【问题讨论】:

如果有很多表匹配*怎么办? @TheMaster 这就是* 的重点——它包含所有以ga_sessions_ 开头的表格 回答你的第二个问题,我自己也不熟悉。这只是我最初的想法。 :) 好吧it is valid syntax。你能删除LIMIT 子句吗?你能提供完整的脚本吗? Edit 提供minimal reproducible example 【参考方案1】:

根据您正在使用的 API 的 this 公共文档,建议您选择要使用的每个表,省略您尝试使用的 *。这将使结果没有问题,您应该添加要从查询中检索的字段。

【讨论】:

在您提供的链接中没有任何建议应该在不使用通配符的情况下专门查询每个表。您能否提供该建议的其他来源? 你能尝试从你的查询中删除限制子句吗?我在没有它的情况下运行了一个查询,它对我有用【参考方案2】:

在每个数据集中,导出的每一天都会导入一个表。每日表格的格式为“ga_sessions_YYYYMMDD”。

参考:https://support.google.com/analytics/answer/3437719?hl=en

var 查询 = " 选择 * FROM bigqueryanalytics360.dataset.ga_sessions_YYYYMMDD* AS ga_sessions 限制 5 "

【讨论】:

以上是关于在 Google App Script 中访问 ga_sessions_*的主要内容,如果未能解决你的问题,请参考以下文章

将cURL与PHP文件中的Google Apps Script Web App一起使用时遇到问题

在Google App Script中使用导入的模块

Google App Script Deploy as Web App 卡在 Fetching Data

Google App Script Regex exec() 仅在一个函数中返回 null

如何在 Google App Script 中使用参数调用 MySQL 存储过程?

在Google-App-Script for Google云端硬盘中如果标题包含某个字词,如何将某些文件从root移动到某个文件夹?