Пошаговая конфигурация

Пошаговая конфигурация позволяет соединителю динамически заполнять конфигурацию соединителя на основе ответов, предоставленных пользователем. Например, заполнение раскрывающегося списка «Город» после выбора раскрывающегося списка «Штат».

Требования

В этом руководстве предполагается, что вы уже знакомы с конфигурациями Community Connector. См. определение конфигурации с помощью getConfig для повышения квалификации.

Обзор

Поэтапная конфигурация состоит из многократного вызова Looker Studio getConfig() , и ваш соединитель каждый раз возвращает дополнительные вопросы по настройке. Каждый вызов getConfig() будет включать ответы пользователя на последний ответ getConfig() . Этот процесс продолжается до тех пор, пока вы возвращаете ответ с помощью setIsSteppedConfig(true) .

Методические рекомендации

Установите setIsSteppedConfig(true) до завершения настройки.
Looker Studio будет неоднократно вызывать getConfig() , пока установлен setIsSteppedConfig(true) . После завершения настройки окончательный ответ getConfig() должен установить setIsSteppedConfig(false) .
Установите isDynamic(true) для вопросов конфигурации, которые определяют последующие вопросы.
Если поле с пометкой isDynamic будет изменено пользователем, последующие записи конфигурации будут удалены в пользовательском интерфейсе, и пользователю необходимо будет настроить все последующие шаги. Это помогает гарантировать, что пользователи не отправят вам недействительную конфигурацию.
Ответы, предоставленные пользователем, будут переданы через request.configParams .

request.configParams будет undefined для первого запроса getConfig() к вашему коннектору. Последующие запросы будут включать предоставленные пользователем ответы в виде объекта, привязанного к идентификаторам конфигурации или undefined , если пользователь не предоставляет никаких ответов.

Пример:

{
  state: 'CA',
  city: 'mountain_view'
}
Конфигурации являются аддитивными

Новые вопросы по конфигурации следует добавлять после существующих.

Конфигурации не могут быть изменены

Если ранее был задан вопрос о конфигурации, он должен присутствовать во всех последующих вызовах. Например, если вопрос о конфигурации A был задан при первом вызове getConfig() , A должен быть включен во все будущие ответы.

Конфигурации идемпотентны

Вызовы getConfig() с теми же configParams должны возвращать ту же конфигурацию.

Динамические параметры не могут быть переопределены

Looker Studio не позволяет переопределять параметры динамической конфигурации.

Примеры конфигураций

Динамические раскрывающиеся списки

Этот первый вопрос предлагает пользователю выбрать штат, а затем динамически предоставляет раскрывающийся список городов на основе выбранного штата.

var cc = DataStudioApp.createCommunityConnector();

function optionsForState(state) {
  switch (state) {
    case "IL": {
      return [["Chicago", "chicago"], ["Springfield", "springfield"]];
    }
    case "CA": {
      return [["Mountain View", "mountain_view"], ["Los Angeles", "los_angeles"]];
    }
    default: {
      cc.newUserError()
          .setText('You must either select "IL" or "CA"')
          .throwException();
    }
  }
}

function getConfig(request) {
  var configParams = request.configParams;
  var isFirstRequest = configParams === undefined;
  var config = cc.getConfig();
  if (isFirstRequest) {
    config.setIsSteppedConfig(true);
  }

  config.newSelectSingle()
      .setId("state")
      .setName("State")
  // Set isDynamic to true so any changes to State will clear the city
  // selections.
      .setIsDynamic(true)
      .addOption(config.newOptionBuilder().setLabel("Illinois").setValue("IL"))
      .addOption(config.newOptionBuilder().setLabel("California").setValue("CA"));

  if (!isFirstRequest) {
    var city = config.newSelectSingle()
        .setId("city")
        .setName("City");
    var cityOptions = optionsForState(configParams.state);
    cityOptions.forEach(function(labelAndValue) {
      var cityLabel = labelAndValue[0];
      var cityValue = labelAndValue[1];
      city.addOption(config.newOptionBuilder().setLabel(cityLabel).setValue(cityValue));
    });
  }
  return config.build();
}

Разветвленные пути

При этом будет задан дополнительный вопрос, если выбранная «Страна» — «США».

var cc = DataStudioApp.createCommunityConnector();

function getConfig(request) {
  var configParams = request.configParams;
  var isFirstRequest = configParams === undefined;
  var config = cc.getConfig();
  if (isFirstRequest) {
    config.setIsSteppedConfig(true);
  }

  config
      .newSelectSingle()
      .setId('country')
      .setName('Country')
  // Set isDynamic to true so any changes to Country will clear the state
  // selections.
      .setIsDynamic(true)
      .addOption(config.newOptionBuilder().setLabel('United States').setValue('USA'))
      .addOption(config.newOptionBuilder().setLabel('Canada').setValue('CA'));

  if (!isFirstRequest) {
    // validate a valid value was selected for configParams.country
    if (configParams.country === undefined) {
      cc.newUserError().setText('You must choose a country.').throwException();
    }
    switch (configParams.country) {
      case 'USA': {
        config
            .newSelectSingle()
            .setId('state')
            .setName('State')
            .addOption(config.newOptionBuilder().setLabel('New York').setValue('NY'))
            .addOption(config.newOptionBuilder().setLabel('Calfornia').setValue('CA'));
        break;
      }
      case 'CA': {
        // No additional configuration is needed for Canada.
        break;
      }
      default: {
        cc.newUserError()
            .setText('You must either select "CA" or "USA"')
            .throwException();
      }
    }
  }
  return config.build();
}