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
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 estarundefined
no primeirogetConfig()
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 ouundefined
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 mesmoconfigParams
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();
}