Konfiguracja krokowa

Konfiguracja krokowa umożliwia oprogramowaniu sprzęgającemu dynamiczne wypełnianie jego funkcji na podstawie odpowiedzi udzielonych przez użytkowników. Na przykład wypełnianie pola „Miasto”. za słowem „Stan” .

Wymagania

W tym przewodniku zakładamy, że znasz już społecznościowe oprogramowanie sprzęgające konfiguracji. Aby odświeżyć sobie informacje, zobacz Definiowanie konfiguracji za pomocą metody getConfig.

Omówienie

Konfiguracja krokowa polega na wywołaniu przez Looker Studio wielu wywołań funkcji getConfig() . Oprogramowanie sprzęgające będzie za każdym razem zwracać więcej pytań dotyczących konfiguracji. Każdy wywołanie getConfig() będzie obejmowało odpowiedzi użytkownika na ostatnie getConfig() . Ten proces jest kontynuowany, dopóki odpowiedź będzie zawierać kod setIsSteppedConfig(true)

Wytyczne

Ustaw setIsSteppedConfig(true) do czasu ukończenia konfiguracji
Looker Studio będzie wielokrotnie wywoływać metodę getConfig() tak długo, jak Ustawiono setIsSteppedConfig(true).Po zakończeniu konfiguracji Odpowiedź getConfig() powinna mieć wartość setIsSteppedConfig(false).
Ustaw isDynamic(true) na potrzeby pytań dotyczących konfiguracji określających kolejne pytania
Jeśli użytkownik zmieni pole oznaczone isDynamic, kolejne wpisy konfiguracji zostaną usunięte w interfejsie, a użytkownik będzie musiał wykonać skonfigurować wszystkie kolejne kroki. Zapobiega to wysyłaniu przez użytkowników nieprawidłowa konfiguracja.
Odpowiedzi podane przez użytkowników będą przekazywane przez request.configParams.

request.configParams będzie mieć wartość undefined za pierwsze getConfig() do oprogramowania sprzęgającego. Kolejne żądania będą zawierać parametr odpowiedzi podane przez użytkownika jako obiektu z kluczami identyfikatorów konfiguracji lub undefined, jeśli użytkownik nie udziela żadnych odpowiedzi.

Przykład:

{
  state: 'CA',
  city: 'mountain_view'
}
Konfiguracje się sumują

Nowe pytania konfiguracyjne należy dodawać po dotychczasowych.

W konfiguracjach nie można wprowadzać mutacji

Jeśli pytanie konfiguracyjne zostało zadane wcześniej, powinno ono być obecne w przypadku przy wszystkich kolejnych wywołaniach. Jeśli na przykład zadano pytanie konfiguracyjne A w pierwszym wywołaniu funkcji getConfig() element A powinien być uwzględniany w kolejnych miejscach odpowiedzi.

Konfiguracje są idempotentne

Wywołania funkcji getConfig() z tym samym identyfikatorem configParams powinny zwracać te same wartości konfiguracji.

Parametrów dynamicznych nie można zastępować

Looker Studio nie zezwoli na dynamiczne parametry konfiguracji zastąpione.

Przykładowe konfiguracje

Dynamiczne menu

W pierwszym pytaniu użytkownik wybiera stan, a następnie dynamicznie podaje z menu na podstawie wybranego stanu.

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

Ścieżki rozgałęzienia

Pojawi się dodatkowe pytanie, jeśli wybrany „Kraj” jest „Stany Zjednoczone”.

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