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 UstawionosetIsSteppedConfig(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 pierwszegetConfig()
do oprogramowania sprzęgającego. Kolejne żądania będą zawierać parametr odpowiedzi podane przez użytkownika jako obiektu z kluczami identyfikatorów konfiguracji lubundefined
, 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 identyfikatoremconfigParams
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();
}