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 quesetIsSteppedConfig(true)foi definido.Quando a configuração for concluída, A respostagetConfig()precisa definirsetIsSteppedConfig(false).
- Defina isDynamic(true)para perguntas de configuração que determinam as próximas questões
- Se um campo marcado como isDynamicfor 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.configParamsvai estar- undefinedno 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- undefinedse 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- configParamsprecisam 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();
}