Эксперименты: метод patch

Требуется авторизация

Обновляет существующий эксперимент. Этот метод поддерживает семантику PATCH. Пример.

Помимо стандартных параметров, этот метод поддерживает перечисленные в таблице ниже.

Запрос

HTTP-запрос

PATCH https://www.googleapis.com/analytics/v3/management/accounts/accountId/webproperties/webPropertyId/profiles/profileId/experiments/experimentId

Параметры

Название параметра Значение Описание
Параметры пути
accountId string Идентификатор аккаунта для обновляемого эксперимента.
experimentId string Идентификатор обновляемого эксперимента.
profileId string Идентификатор представления (профиля) для обновляемого эксперимента.
webPropertyId string Идентификатор веб-ресурса для обновляемого эксперимента.

Авторизация

Для выполнения этого запроса требуется авторизация как минимум в одной из следующих областей доступа. Подробнее...

Область доступа
https://www.googleapis.com/auth/analytics
https://www.googleapis.com/auth/analytics.edit

Тело запроса

В теле запроса требуется предоставить части ресурса management.experiment со следующими свойствами в соответствии с правилами семантики PATCH:

Название свойства Значение Описание Примечания
Обязательные свойства
id string Идентификатор эксперимента. Обязательное поле для методов patch и update. Не используется в методе create.
Необязательные свойства
description string Описание эксперимента. Можно редактировать
editableInGaUi boolean Указывает, может ли конечный пользователь редактировать эксперимент через интерфейс Google Analytics (значение true). Можно редактировать
equalWeighting boolean Логическое значение, задающее равномерное распределение трафика между всеми вариантами. Если задано значение false, эксперименты со страницами будут происходить в соответствии с заданным по умолчанию поведением с динамической корректировкой трафика на основе эффективности вариантов. Необязательный параметр, по умолчанию равный false. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
minimumExperimentLengthInDays integer Целое число в диапазоне [3, 90], которое определяет минимальную продолжительность эксперимента и может изменяться во время его проведения. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
name string Название эксперимента. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Обязательно при создании эксперимента. Можно редактировать
objectiveMetric string Показатель, который оптимизируется в рамках эксперимента. Допустимые значения: ga:goal(n)Completions, ga:adsenseAdsClicks, ga:adsenseAdsViewed, ga:adsenseRevenue, ga:bounces, ga:pageviews, ga:sessionDuration, ga:transactions, ga:transactionRevenue. Если эксперимент имеет статус RUNNING, а параметр servingFramework имеет значение REDIRECT или API, это поле является обязательным. Можно редактировать
optimizationType string Указывает, требуется ли добиться минимального или максимального значения параметра objectiveMetric. Допустимые значения: MAXIMUM, MINIMUM. Необязательный параметр, по умолчанию равный MAXIMUM. Задается только вместе с параметром objectiveMetric и не может изменяться для экспериментов со статусом RUNNING или ENDED. Можно редактировать
rewriteVariationUrlsAsOriginal boolean Логическое значение, позволяющее перезаписывать URL вариантов в соответствии с URL исходной страницы. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
servingFramework string Платформа для показа и анализа вариантов эксперимента. Допустимые значения:
  • REDIRECT – Google Analytics переадресует трафик на различные варианты страниц, формирует отчеты по вариантам и анализирует полученные результаты.
  • API – Google Analytics выбирает вариант для показа, создает отчеты на его основе и анализирует результаты. Показ варианта осуществляет вызывающая сторона.
  • EXTERNAL – обработку вариантов осуществляет внешняя платформа, передающая сведения о них в Google Analytics. Показ выбранного варианта и анализ результатов осуществляет вызывающая сторона.
Можно редактировать
status string Статус эксперимента. Допустимые значения: DRAFT, READY_TO_RUN, RUNNING, ENDED. Создаваемому эксперименту можно присваивать первые три статуса. При создании эксперимента это поле является обязательным. Можно редактировать
trafficCoverage double Число с плавающей запятой в диапазоне от 0 до 1. Определяет долю трафика, включаемую в эксперимент, и может изменяться во время его проведения. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
variations[] list Массив вариантов. Первым элементом является исходная страница. После того, как эксперименту присвоен статус RUNNING, количество вариантов нельзя изменить. Статус RUNNING может получить только эксперимент с как минимум двумя вариантами. Можно редактировать
variations[].name string Название варианта. При создании эксперимента это поле является обязательным. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
variations[].status string Статус варианта. Допустимые значения: ACTIVE (активный) и INACTIVE (не показывается). Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать
variations[].url string URL варианта. Для выполняющихся (статус RUNNING) и завершенных (статус ENDED) экспериментов это поле доступно только для чтения. Можно редактировать
winnerConfidenceLevel double Число с плавающей запятой в диапазоне от 0 до 1. Задает уровень доверительной вероятности для определения победившего варианта. Для завершенных экспериментов (статус ENDED) это поле доступно только для чтения. Можно редактировать

Ответ

В случае успеха метод возвращает ресурс management.experiment в теле ответа.

Примеры

Примечание. Примеры кода для этого метода не охватывают все поддерживаемые языки программирования (их список опубликован на странице, посвященной клиентским библиотекам).

Java

Используется клиентская библиотека Java.

/*
 * Note: This code assumes you have an authorized Analytics service object.
 * See the Experiments Developer Guide for details.
 */

// This example patches an existing experiment with new variations.
Variations variationA = new Variations();
variationA.setName("Home A");
variationA.setUrl("homeA.html");
Variations variationB = new Variations();
variationB.setName("Home B");
variationB.setUrl("homeB.html");
List<Variations> variations = Arrays.asList(variationA, variationB);

try {
  // First get an existing Experiment.
  Experiment body = analytics.management().experiments().get("123456",
      "UA-123456-1", "7654321", "122333444455555").execute();

  // Set the new variations.
  body.setVariations(variations);

  // Call Patch with the updated experiment.
  analytics.management().experiments().patch("123456", "UA-123456-1",
      "7654321", "12233344455555", body).execute();
} catch (GoogleJsonResponseException e) {
  System.err.println("There was a service error: "
      + e.getDetails().getCode() + " : "
      + e.getDetails().getMessage());
}

PHP

Используется клиентская библиотека PHP.

/**
 * Note: This code assumes you have an authorized Analytics service object.
 * See the Experiments Developer Guide for details.
 */

/**
 * This request patches an existing experiment.
 */

// Construct the first variation.
$variationA = new Google_Service_Analytics_ExperimentVariations();
$variationA->setName('VariationA');
$variationA->setUrl('index.html');

// Construct the second variation.
$variationB = new Google_Service_Analytics_ExperimentVariations();
$variationB->setName('VariationB');
$variationB->setUrl('indexB.html');

try {
  // Get an existing Experiment.
  $experiment = $analytics->management_experiments->get('123456',
      'UA-123456-1', '7654321', '122333444455555');

  // Set the new variations.
  $experiment->setVariations(array($variationA, $variationB));

  // Call the patch method with the updated experiment.
  $analytics->management_experiments->patch('123456', 'UA-123456-1',
      '7654321', '122333444455555', $experiment);
} catch (apiServiceException $e) {
  print 'There was an Analytics API service error '
      . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
  print 'There was a general API error '
      . $e->getCode() . ':' . $e->getMessage();
}

Python

Используется клиентская библиотека Python.

# Note: This code assumes you have an authorized Analytics service object.
# See the Experiments Developer Guide for details.

# This request patches an existing experiment with a new name,
# and new variations.
try:
  analytics.management().experiments().patch(
      accountId='123456',
      webPropertyId='UA-123456-1',
      profileId='7654321',
      experimentId='ABCDEFG123456abcdefg',
      body={
          'name': 'Landing Page Test April',
          'variations': [
              {
                  'name': 'First Variation',
                  'url': 'index.html'
              },
              {
                  'name': 'Proposed Change',
                  'url': 'indexB.html'
              }
          ]
      }
  ).execute()

except TypeError, error:
  # Handle errors in constructing a query.
  print 'There was an error in constructing your query : %s' % error

except HttpError, error:
  # Handle API errors.
  print ('There was an API error : %s : %s' %
         (error.resp.status, error.resp.reason))

JavaScript

Используется клиентская библиотека JavaScript.

/*
 * Note: This code assumes you have an authorized Analytics client object.
 * See the Experiments Developer Guide for details.
 */

/*
 * This request patches an existing experiment.
 */
function patchExperiment() {
  var request = gapi.client.analytics.management.experiments.patch(
    {
      'accountId': '123456',
      'webPropertyId': 'UA-123456-1',
      'profileId': '7654321',
      'experimentId': '122333444455555',
      'resource': {
        'name': 'Landing Page Test',
        'status': 'DRAFT',
        'variations': [
          {
            'name': 'VariationA',
            'url': 'index.html'
          },
          {
            'name': 'VariationB',
            'url': 'indexB.html'
          }
        ]
      }
    });
  request.execute(function (response) { // Handle the response. });
}