Configuração por etapas

Na configuração por etapas, o conector preenche dinamicamente a própria configuração com base nas respostas fornecidas pelo usuário. Por exemplo, as informações da lista suspensa "Cidade" são preenchidas depois que "Estado" é selecionado.

Requisitos

Para acompanhar o conteúdo deste guia, você precisa conhecer as configurações do conector da comunidade. Consulte Definir a configuração via getConfig se precisar de uma revisão.

Visão geral

A configuração por etapas consiste no Looker Studio chamando getConfig() vezes, e seu conector retorna mais perguntas de configuração a cada vez. Cada a chamada para getConfig() incluirá as respostas do usuário aos últimos getConfig() resposta. Esse processo continuará enquanto você retornar uma resposta com setIsSteppedConfig(true):

Diretrizes

Defina setIsSteppedConfig(true) até que a configuração seja concluída
O Looker Studio vai chamar getConfig() repetidamente, desde que setIsSteppedConfig(true) foi definido.Quando a configuração for concluída, A resposta getConfig() precisa definir setIsSteppedConfig(false).
Defina isDynamic(true) para perguntas de configuração que determinam as próximas questões
Se um campo marcado como isDynamic for modificado pelo usuário, as entradas de configuração serão apagadas na interface do usuário, e o usuário precisará configure todas as etapas subsequentes. Isso ajuda a garantir que os usuários não enviem uma configuração inválida.
As respostas fornecidas pelo usuário serão transmitidas por request.configParams.

O valor de request.configParams vai estar undefined no primeiro getConfig() ao seu conector. As solicitações seguintes vão incluir o respostas fornecidas pelo usuário como um objeto inserido pelos IDs de configuração ou undefined se o usuário não responder.

Exemplo:

{
  state: 'CA',
  city: 'mountain_view'
}
As configurações são acumulativas

Novas questões de configuração serão adicionadas após as existentes.

Não é possível alterar as configurações

Se uma pergunta de configuração já foi feita, ela precisa estar presente em todas as chamadas seguintes. Por exemplo, se a pergunta de configuração A foi feita na primeira chamada para getConfig(), A deve ser incluído em todas de resposta.

As configurações são idempotentes

Chamadas para getConfig() com o mesmo configParams precisam retornar o mesmo configuração do Terraform.

Os parâmetros dinâmicos não podem ser modificáveis

O Looker Studio não vai permitir que os parâmetros de configuração dinâmica sejam substituído.

Exemplos de configurações

Listas suspensas dinâmicas

Na primeira pergunta, o usuário precisa selecionar um estado e, em seguida, será exibida uma lista suspensa dinâmica de cidades com base no estado em questão.

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();
}

Caminhos de ramificação

Uma pergunta adicional será feita se o "País" selecionado for "EUA".

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();
}