단계별 구성

단계별 구성을 사용하면 커넥터가 커넥터를 동적으로 채울 수 있습니다. 구성을 기반으로 합니다. 예를 들어 '도시'를 '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();
}