ステップ設定

ステップ設定により、ユーザーが指定した回答に基づいてコネクタ設定がコネクタに動的に取り込まれます。たとえば、「州」プルダウンが選択された後に「都市」プルダウンが表示されます。

要件

このガイドは、コミュニティ コネクタの設定に精通している方を対象としています。復習として、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 は、最初の getConfig()undefined になります リクエストをコネクタに送信します。後続のリクエストには、 設定 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();
}

分岐パス

選択した「国」が「米国」である場合、さらに質問されます。

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();
}