Configurazione con passaggi

La configurazione con passaggi consente a un connettore di completare dinamicamente il connettore basata sulle risposte fornite dall'utente. Ad esempio, la compilazione di una "Città" menu a discesa dopo uno "Stato" l'elenco a discesa è selezionato.

Requisiti

Questa guida presuppone che tu abbia già familiarità con il Connettore della community configurazioni. Per un ripasso, consulta definire la configurazione tramite getConfig.

Panoramica

La configurazione con passaggi consiste in Looker Studio che chiama più getConfig() e il connettore restituisce ogni volta più domande di configurazione. Ciascuna la chiamata al numero getConfig() includerà le risposte dell'utente alle ultime getConfig() la risposta corretta. Questa procedura continua a condizione che tu restituisca una risposta con setIsSteppedConfig(true).

Linee guida

Imposta setIsSteppedConfig(true) fino al completamento della configurazione
Looker Studio chiamerà ripetutamente getConfig() a condizione che setIsSteppedConfig(true) è impostato.Al termine della configurazione, La risposta getConfig() deve impostare setIsSteppedConfig(false).
Imposta isDynamic(true) per le domande di configurazione che determinano le domande successive
Se un campo contrassegnato come isDynamic viene modificato dall'utente, le successive le voci di configurazione verranno cancellate nella UI e l'utente dovrà e configurare tutti i passaggi successivi. Questo aiuta a garantire che gli utenti non ti inviino un configurazione non valida.
Le risposte fornite dall'utente verranno trasmesse tramite request.configParams.

request.configParams sarà undefined per i primi getConfig() richiesta al connettore. Le richieste successive includeranno risposte fornite dall'utente come un oggetto basato sugli ID configurazione o undefined se l'utente non fornisce risposte.

Esempio:

{
  state: 'CA',
  city: 'mountain_view'
}
Le configurazioni sono cumulative

È necessario aggiungere nuove domande di configurazione dopo quelle esistenti.

Le configurazioni non possono essere mutate

Se in precedenza è stata fatta una domanda di configurazione, dovrebbe essere presente per per tutte le chiamate successive. Ad esempio, se è stata posta la domanda di configurazione A nella prima chiamata a getConfig(), A deve essere incluso in tutte le chiamate future diverse.

Le configurazioni sono idempotenti

Le chiamate a getConfig() con lo stesso configParams dovrebbero restituire lo stesso configurazione.

Impossibile eseguire l'override dei parametri dinamici

Looker Studio non consente ai parametri di configurazione dinamica con override.

Configurazioni di esempio

Menu a discesa dinamici

Questa prima domanda chiede all'utente di selezionare uno stato, poi fornisce dinamicamente un menu a discesa della città in base allo stato selezionato.

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

Percorsi di ramificazione

Verrà visualizzata un'ulteriore domanda se il "Paese" selezionato è "USA".

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