단계별 구성을 사용하면 커넥터가 커넥터를 동적으로 채울 수 있습니다. 구성을 기반으로 합니다. 예를 들어 '도시'를 'State'(주) 선택합니다.
요구사항
이 가이드는 커뮤니티 커넥터에 이미 익숙하다고 가정합니다. 구성할 수 있습니다 복습은 getConfig를 통한 구성 정의를 참고하세요.
개요
단계식 구성은 getConfig()
를 여러 차례 호출하는 Looker Studio로 구성됩니다.
커넥터가 매번 더 많은 구성 질문을 반환합니다 각
getConfig()
호출에는 마지막 getConfig()
에 대한 사용자의 답변이 포함됩니다.
있습니다. 이 프로세스는
setIsSteppedConfig(true)
가이드라인
- 구성이 완료될 때까지
setIsSteppedConfig(true)
를 설정합니다. - Looker Studio는 다음 시간 동안
getConfig()
를 반복적으로 호출합니다.setIsSteppedConfig(true)
가 설정되었습니다.구성이 완료되면 최종getConfig()
응답에서setIsSteppedConfig(false)
를 설정해야 합니다. - 이후 질문을 결정하는 구성 질문에
isDynamic(true)
를 설정합니다. - 사용자가
isDynamic
로 표시된 필드를 수정하면 구성 항목이 UI에서 삭제되며 모든 후속 단계를 구성합니다. 이렇게 하면 사용자가 이메일을 보내는 대신 잘못된 구성 - 사용자 제공 답변은
request.configParams
을(를) 통해 전달됩니다. 처음
getConfig()
동안request.configParams
이(가)undefined
이(가) 됩니다. 커넥터에 요청을 보냅니다. 이후 요청에는 구성 ID 또는 구성 ID로 키가 지정된 객체로undefined
: 사용자가 아무 답변도 하지 않은 경우예:
{ state: 'CA', city: 'mountain_view' }
- 구성은 중복됩니다.
새 구성 질문은 기존 질문 다음에 추가해야 합니다.
- 구성은 변경할 수 없습니다.
이전에 구성 질문을 한 경우 모든 후속 호출에 적용됩니다. 예를 들어 구성 질문 A가 첫 번째
getConfig()
호출에 A가 모든 미래에 포함되어야 함 확인할 수 있습니다- 구성은 멱등성을 지닙니다.
configParams
가 동일한getConfig()
호출은 동일한 값을 반환해야 합니다. 구성할 수 있습니다- 동적 매개변수는 재정의할 수 없습니다.
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();
}
분기형 경로
선택한 '국가'가 선택된 경우 추가 질문이 표시됩니다. '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();
}