Пошаговая конфигурация позволяет соединителю динамически заполнять конфигурацию соединителя на основе ответов, предоставленных пользователем. Например, заполнение раскрывающегося списка «Город» после выбора раскрывающегося списка «Штат».
Требования
В этом руководстве предполагается, что вы уже знакомы с конфигурациями Community Connector. См. определение конфигурации с помощью getConfig для повышения квалификации.
Обзор
Пошаговая конфигурация состоит из многократного вызова Looker Studio getConfig()
, и ваш соединитель каждый раз возвращает дополнительные вопросы по настройке. Каждый вызов getConfig()
будет включать ответы пользователя на последний ответ getConfig()
. Этот процесс продолжается до тех пор, пока вы возвращаете ответ с помощью setIsSteppedConfig(true)
.
Рекомендации
- Установите
setIsSteppedConfig(true)
до завершения настройки. - Looker Studio будет неоднократно вызывать
getConfig()
, пока установленsetIsSteppedConfig(true)
После завершения настройки окончательный ответgetConfig()
должен установитьsetIsSteppedConfig(false)
. - Установите
isDynamic(true)
для вопросов конфигурации, которые определяют последующие вопросы. - Если поле с пометкой
isDynamic
будет изменено пользователем, последующие записи конфигурации будут удалены в пользовательском интерфейсе, и пользователю необходимо будет настроить все последующие шаги. Это помогает гарантировать, что пользователи не отправят вам недействительную конфигурацию. - Ответы, предоставленные пользователем, будут переданы через
request.configParams
. request.configParams
будетundefined
для первого запросаgetConfig()
к вашему коннектору. Последующие запросы будут включать предоставленные пользователем ответы в виде объекта, привязанного к идентификаторам конфигурации илиundefined
, если пользователь не предоставляет никаких ответов.Пример:
{ state: 'CA', city: 'mountain_view' }
- Конфигурации являются аддитивными
Новые вопросы по конфигурации следует добавлять после существующих.
- Конфигурации не могут быть изменены
Если ранее был задан вопрос о конфигурации, он должен присутствовать во всех последующих вызовах. Например, если вопрос о конфигурации A был задан при первом вызове
getConfig()
, A должен быть включен во все будущие ответы.- Конфигурации идемпотентны
Вызовы
getConfig()
с теми жеconfigParams
должны возвращать ту же конфигурацию.- Динамические параметры не могут быть переопределены
Looker Studio не позволяет переопределять параметры динамической конфигурации.
Примеры конфигураций
Динамические раскрывающиеся списки
Этот первый вопрос предлагает пользователю выбрать штат, а затем динамически предоставляет раскрывающийся список городов на основе выбранного штата.
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();
}
Разветвленные пути
При этом будет задан дополнительный вопрос, если выбранная «Страна» — «США».
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();
}