0

我最近开始使用 Google Apps 脚本来自动化一些 Google Analytics 报告任务。Google Analytics Services 返回的许多对象都具有“get”函数,这些函数以字符串的形式返回 URL。实际上,许多 Google Apps 脚本对象都有返回这些资源 URL 的函数,而不仅仅是 Google 的分析服务。迹象是我可以以某种方式使用这些 URL 来引用 Google Apps 资源并获取对象作为回报,但我不知道如何。

我尝试在浏览器中简单地加载这些 URL 之一,期望 JSON 或其他我可以使用的东西,但收到了 404 错误。当我尝试使用 Google Apps Script UrlFetchApp 请求 URL 时,也发生了同样的情况。

这是一个简单的例子:

var accountId = '0123456789'; // Pretend this is a valid account number

// Get the first WebProperty
var webProp = Analytics.Management.Webproperties.list(accountId).getItems()[0];

// ...getHref() is along the lines of "https://www.googleapis.com/analytics/v3/management/accounts/0123456789"
var parentHref = webProp.getParetLink().getHref();

问题是,我该怎么做parentHref才能取回 Analytics Account 对象?我觉得我错过了一些应该相当基本的东西......

资源:

4

2 回答 2

0

阅读使用 OAuth 2.0 访问 Google API,将帮助您获得所需的内容。

我添加了一个非常基本的代码,可以作为指南。

/* CODE FOR DEMONSTRATION PURPOSES */
function authorizeGAS() {
  var result = false;
  var oauthConfig = UrlFetchApp.addOAuthService("google");

  oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?" +
                                 "scope=https://www.googleapis.com/auth/analytics.readonly");
  oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oauthConfig.setConsumerKey(ScriptProperties.getProperty("YOUR_ANALYTICS_CONSUMER_KEY"));
  oauthConfig.setConsumerSecret(ScriptProperties.getProperty("YOUR_ANALYTICS_CONSUMER_SECRET"));

  var requestData = {
    "method": "GET",
    "oAuthServiceName": "google",
    "oAuthUseToken": "always"
  };  
  var URL = "https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles";

  try {
    result = JSON.parse(UrlFetchApp.fetch(URL, requestData).getContentText());
  } catch (e) {
    if (e.message) Logger.log(e.message);
  }

  Logger.log(result);
  return result;
}
于 2013-08-25T02:19:22.747 回答
0

这与激活 API 无关。这显然很活跃,因为他已经在获取分析数据。

您不能只 urlfetch 这些 URL,因为您缺少与调用需要身份验证和许可的 URL 相关的OAuth相关代码。

于 2013-08-25T00:40:32.247 回答