Bei der schrittweisen Konfiguration kann ein Connector die Connectorkonfiguration dynamisch anhand der Antworten des Nutzers ausfüllen. Beispiel: Wenn ein Drop-down-Menü für „Bundesland“ ausgewählt wurde, wird ein Drop-down-Menü für „Stadt“ ausgefüllt.
Voraussetzungen
In dieser Anleitung wird davon ausgegangen, dass Sie bereits mit Community Connector-Konfigurationen vertraut sind. Eine Auffrischung finden Sie unter Konfiguration über getConfig definieren.
Übersicht
Bei der schrittweisen Konfiguration ruft Data Studio getConfig() mehrmals auf und Ihr Connector gibt jedes Mal weitere Konfigurationsfragen zurück. Jeder Aufruf von getConfig() enthält die Antworten des Nutzers auf die letzte getConfig()-Antwort. Dieser Vorgang wird so lange fortgesetzt, bis Sie eine Antwort mit setIsSteppedConfig(true) zurückgeben.
Richtlinien
setIsSteppedConfig(true)festlegen, bis die Konfiguration abgeschlossen ist- Data Studio ruft
getConfig()so lange wiederholt auf, bissetIsSteppedConfig(true)festgelegt ist.Nach Abschluss der Konfiguration sollte in der letztengetConfig()-AntwortsetIsSteppedConfig(false)festgelegt werden. isDynamic(true)für Konfigurationsfragen festlegen, die spätere Fragen bestimmen- Wenn ein Feld mit
isDynamicvom Nutzer geändert wird, werden nachfolgende Konfigurationseinträge in der Benutzeroberfläche gelöscht und der Nutzer muss alle nachfolgenden Schritte konfigurieren. So wird verhindert, dass Nutzer Ihnen eine ungültige Konfiguration senden. - Die vom Nutzer angegebenen Antworten werden über
request.configParamsübergeben. request.configParamsist für die erstegetConfig()-Anfrage an Ihren Connectorundefined. Nachfolgende Anfragen enthalten die vom Nutzer angegebenen Antworten als Objekt, das nach den Konfigurations-IDs oderundefinedstrukturiert ist, wenn der Nutzer keine Antworten gibt.Beispiel:
{ state: 'CA', city: 'mountain_view' }- Konfigurationen sind additiv
Neue Konfigurationsfragen sollten nach den vorhandenen hinzugefügt werden.
- Konfigurationen können nicht geändert werden
Wenn eine Konfigurationsfrage bereits gestellt wurde, sollte sie bei allen nachfolgenden Aufrufen vorhanden sein. Wenn beispielsweise die Konfigurationsfrage A im ersten Aufruf von
getConfig()gestellt wurde, sollte A in allen zukünftigen Antworten enthalten sein.- Konfigurationen sind idempotent
Aufrufe von
getConfig()mit denselbenconfigParamssollten dieselbe Konfiguration zurückgeben.- Dynamische Parameter können nicht überschrieben werden
In Data Studio können dynamische Konfigurationsparameter nicht überschrieben werden.
Beispielkonfigurationen
Dynamische Drop-down-Menüs
In dieser ersten Frage wird der Nutzer aufgefordert, ein Bundesland auszuwählen. Anschließend wird dynamisch ein Drop-down-Menü für die Stadt basierend auf dem ausgewählten Bundesland bereitgestellt.
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();
}
Verzweigungspfade
Wenn das ausgewählte Land „USA“ ist, wird eine zusätzliche Frage gestellt.
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();
}