La configuración escalonada permite que un conector propague de forma dinámica su configuración en función de las respuestas proporcionadas por el usuario. Por ejemplo, para propagar un menú desplegable "Ciudad" después de seleccionar un menú desplegable "Estado".
Requisitos
En esta guía, se supone que ya conoces la configuración del conector de comunidad. Consulta Cómo definir la configuración mediante getConfig para hacer un repaso.
Descripción general
La configuración escalonada consiste en que Looker Studio llame a getConfig()
varias veces y que el conector muestre más preguntas de configuración cada vez. Cada llamada a getConfig()
incluirá las respuestas del usuario a la última respuesta de getConfig()
. Este proceso continúa siempre que muestres una respuesta con setIsSteppedConfig(true)
.
Lineamientos
- Establece
setIsSteppedConfig(true)
hasta que se complete la configuración. - Looker Studio llamará reiteradamente a
getConfig()
siempre que se configuresetIsSteppedConfig(true)
.Una vez que se complete la configuración, la respuesta final degetConfig()
debe establecerse ensetIsSteppedConfig(false)
. - Configura
isDynamic(true)
para las preguntas de configuración que determinan las preguntas posteriores. - Si el usuario modifica un campo marcado como
isDynamic
, las entradas de configuración posteriores se borrarán en la IU, y el usuario deberá configurar todos los pasos posteriores. Esto ayuda a garantizar que los usuarios no te envíen una configuración no válida. - Las respuestas proporcionadas por el usuario se aprobarán mediante
request.configParams
. request.configParams
seráundefined
para la primera solicitudgetConfig()
al conector. Las solicitudes posteriores incluirán las respuestas proporcionadas por el usuario como un objeto con clave por los IDs de configuración oundefined
si el usuario no proporciona ninguna respuesta.Ejemplo:
{ state: 'CA', city: 'mountain_view' }
- Las configuraciones son acumulativas
Se deben agregar las preguntas de configuración nuevas después de las existentes.
- Los parámetros de configuración no se pueden mutar
Si se hizo una pregunta de configuración anteriormente, debería estar presente en todas las llamadas posteriores. Por ejemplo, si la pregunta de configuración A se hizo en la primera llamada a
getConfig()
, se debe incluir A en todas las respuestas futuras.- Las configuraciones son idempotentes
Las llamadas a
getConfig()
con el mismoconfigParams
deben mostrar la misma configuración.- Los parámetros dinámicos no se pueden anular.
Looker Studio no permitirá que se anulen los parámetros de configuración dinámica.
Configuración de ejemplo
Menús desplegables dinámicos
La primera pregunta le pide al usuario que seleccione un estado y, luego, muestra dinámicamente un menú desplegable de la ciudad según el estado seleccionado.
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();
}
Ramificación de rutas
Esta acción hará una pregunta adicional si el “País” seleccionado es “EE.UU.”.
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();
}