使用GS从GA4 runRealtimeReport导入数据到Google Sheets



在Google AppsScript上,我一直试图将实时用户数据从GA4属性拉到Google表中。然而,我一直得到以下错误信息:此API不支持API密钥。期望的OAuth2访问令牌或其他身份验证凭证…">

下面是我的尝试:

async function test4() {
var theAuthorization = "Bearer " + [[oAuthtoken]];
var theRequestBody = {"dimensions":[{"name":"country"}],"metrics":[{"name":"activeUsers"}],"limit":"10","orderBys":[{"metric":{"metricName":"activeUsers"},"desc":true}],"returnPropertyQuota":true,"minuteRanges":[{"name":"1minute","startMinutesAgo":2,"endMinutesAgo":0}]};
var theOptions = {method: 'POST',headers: {'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': theAuthorization}, body: theRequestBody};
const response = await UrlFetchApp.fetch("https://analyticsdata.googleapis.com/v1beta/properties/[GA4property]:runRealtimeReport?key=[[API key]]", theOptions);
Logger.log(JSON.parse(response));
}

我已经启用了必要的api和作用域。

  1. 我想我做了一些错误的授权变量。如何生成后者?
  2. 在这种情况下API密钥是必要的吗?

我已经在https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport上测试了请求体,它工作了。

事先感谢您的意见。

Issue:

我不知道你是怎么想出[[oAuthtoken]]的,但我猜这不是一个有效的oAuthToken

为了得到这个,你应该:

  • 确保脚本被授权使用其中一个方法范围(例如https://www.googleapis.com/auth/analytics.readonly)。例如,您可以将其设置为显式范围。
  • ScriptApp使用。getOAuthToken获取令牌(例如const oAuthtoken = ScriptApp.getOAuthToken();)。

另外,你是对的,API密钥不是必需的。由于您提供了OAuth令牌,因此API密钥完全是多余的。

使用Analytics Data Service:

调用这个API更简单的方法是使用Analytics Data Service:
AnalyticsData.Properties.runRealtimeReport(theRequestBody, yourProperty);

在这种情况下,Apps Script为你处理授权,所以你不必担心OAuth令牌。

另外,由于它是高级服务,你必须首先启用它。

相关内容

  • 没有找到相关文章

最新更新