Configuración escalonada

La configuración escalonada permite que un conector propague el contenido de forma dinámica. basada en las respuestas proporcionadas por el usuario. Por ejemplo, propagar una "Ciudad" el menú desplegable después de “State” está seleccionado el menú desplegable.

Requisitos

En esta guía, se asume que ya tienes conocimientos sobre el conector de la comunidad parámetros de configuración. Consulta cómo definir la configuración a través de getConfig para actualizar.

Descripción general

La configuración escalonada consiste en que Looker Studio llame a getConfig() varias veces veces, y tu conector devolverá más preguntas de configuración cada vez. Cada La llamada a getConfig() incluirá las respuestas del usuario a la última getConfig() respuesta. Este proceso continúa siempre que devuelvas 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 configura setIsSteppedConfig(true).Una vez que se completa la configuración, La respuesta de getConfig() debe establecer setIsSteppedConfig(false).
Establece isDynamic(true) para preguntas de configuración que determinan preguntas posteriores.
Si el usuario modifica un campo marcado como isDynamic, ocurrirá lo siguiente: las entradas de configuración se borrarán de la IU, y el usuario deberá configurar todos los pasos posteriores. De esta forma, te aseguras de que los usuarios no te envíen configuración no válida.
Las respuestas proporcionadas por el usuario se pasarán a través de request.configParams.

request.configParams será undefined durante los primeros getConfig(). solicitud a tu conector. Las solicitudes posteriores incluirán el las respuestas proporcionadas por el usuario como un objeto con clave de los IDs de configuración o Es undefined si el usuario no proporciona ninguna respuesta.

Ejemplo:

{
  state: 'CA',
  city: 'mountain_view'
}
Las configuraciones son aditivas

Se deben agregar preguntas de configuración nuevas después de las existentes.

No se pueden mutar las configuraciones

Si se hizo una pregunta de configuración anteriormente, debe estar presente para todas las llamadas posteriores. Por ejemplo, si se hizo la pregunta de configuración A En la primera llamada a getConfig(), se debe incluir A en todas las llamadas de respuestas ante incidentes.

Las configuraciones son idempotentes

Las llamadas a getConfig() con el mismo configParams deben mostrar el mismo resultado. configuración.

Los parámetros dinámicos no se pueden anular

Looker Studio no permitirá que se borren los parámetros de configuración anulado.

Configuración de ejemplo

Menús desplegables dinámicos

En la primera pregunta, se solicita al usuario que seleccione un estado, y luego se proporciona, de forma dinámica, un menú desplegable de 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();
}

Rutas con ramas

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