将实验插入Google analytics api(gapi)

时间:2013-12-04 22:26:32

标签: javascript google-analytics google-analytics-api

我正在尝试通过他们的api(使用gapi)将实验插入Google分析

var experiment = {
  "name": "Testing",
  "description": "test",
  "status": "READY_TO_RUN",
     "variations": [{
        "name": "Original",
        "url": "http://abc.se",
      }, {
        "name": "Variant 1",
        "url": "http://abc.se/1",
      }],
};

gapi.client.analytics.management.experiments.insert({
  'accountId': currentProfile['accountId'],
  'profileId': currentProfile['profileId'],
  'webPropertyId': currentProfile['webPropertyId'],
  'resource': experiment
}).execute(callback);

我得到的响应代码是“code”:500,“message”:“内部错误。”,

任何帮助都将受到赞赏。 (关于stackoverflow的第一个问题,如果我的问题很模糊,我会事先道歉。)

2 个答案:

答案 0 :(得分:0)

首先,查看API Reference for the Experiment INSERT method

它要求您发出POST请求,并且在请求正文中您需要提供实验资源。在这种情况下,必需的属性/字段是名称,状态和变体名称。您还需要设置objectiveMetric,因为根据引用,如果status为“RUNNING”并且servingFramework是“REDIRECT”或“API”之一,则此字段是必需的。

如果您正在使用JavaScript客户端,则需要使用gapi.client.request来执行此方法。你不能按照你所描述的方式去做,因为那会产生GET请求,而你还没有提供请求体。您需要使用请求正文发出POST请求。看看Using gapi.client.request to make REST requests

所以它看起来像:

var requestBody = {
  'name': 'Testing',
  'status': 'RUNNING',
  'objectiveMetric': 'ga:timeOnSite',
  'variations': [
    {'name': 'VER 1', 'status': 'ACTIVE', 'url': 'http://abs.com/1'},
    {'name': 'VER 2', 'status': 'ACTIVE', 'url': 'http://abs.com/2'}
  ],
};

var request = gapi.client.request({
  'path': '/analytics/v3/management/accounts/YOUR_ACCOUNT_ID/webproperties/YOUR_WEBPROPERTY_ID/profiles/YOUR_PROFILE_ID/experiments',
  'method': 'POST',
  'body': JSON.stringify(requestBody)});
request.execute(handleAccounts);

答案 1 :(得分:0)

解决方案是添加参数“objective Metric”。虽然未在文档中指定。

最终代码:

var requestBody = {
  "name": "testing2", //required
  "status": "READY_TO_RUN", //required
  "objectiveMetric": "ga:goal11Completions", //required?
  "variations": [
  {
   "name": "test1", //required
   "status": "ACTIVE",
   "url": "http://abs.se/3" //required
  },
  {
   "name": "test2", //required
   "status": "ACTIVE",
   "url": "http://abs.se/4" //required
  }
 ]
};


var request = gapi.client.request({
  'path': '/analytics/v3/management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments',
  'method': 'POST',
  'body': JSON.stringify(requestBody)});
  request.execute(handleAccounts);
}

非常感谢Pete的帮助。