Konfigurasi Berlangkah

Konfigurasi bertahap memungkinkan konektor mengisi konektor secara dinamis berdasarkan jawaban yang diberikan pengguna. Misalnya, mengisi "City" setelah "Negara Bagian" dropdown dipilih.

Persyaratan

Panduan ini mengasumsikan Anda sudah memahami Community Connector konfigurasi standar. Lihat menentukan konfigurasi melalui getConfig untuk mengingat kembali.

Ringkasan

Konfigurasi bertahap terdiri dari Looker Studio yang memanggil getConfig() beberapa kali, dan konektor Anda menampilkan lebih banyak pertanyaan konfigurasi. Masing-masing panggilan ke getConfig() akan menyertakan jawaban pengguna atas getConfig() terakhir yang dihasilkan. Proses ini berlanjut selama Anda membalas respons dengan setIsSteppedConfig(true).

Panduan

Setel setIsSteppedConfig(true) sampai konfigurasi selesai
Looker Studio akan berulang kali memanggil getConfig() selama setIsSteppedConfig(true) siap.Setelah konfigurasi selesai, konfigurasi Respons getConfig() harus menetapkan setIsSteppedConfig(false).
Tetapkan isDynamic(true) untuk pertanyaan konfigurasi yang menentukan pertanyaan berikutnya
Jika kolom bertanda isDynamic diubah oleh pengguna, berikutnya entri konfigurasi akan dihapus di UI, dan pengguna harus melakukan konfigurasi semua langkah berikutnya. Hal ini membantu memastikan bahwa pengguna tidak mengirimi Anda konfigurasi yang tidak valid.
Jawaban yang diberikan pengguna akan diteruskan melalui request.configParams.

request.configParams akan menjadi undefined untuk getConfig() pertama ke konektor Anda. Permintaan berikutnya akan mencakup jawaban yang diberikan pengguna sebagai objek yang dikunci oleh ID konfigurasi atau undefined jika pengguna tidak memberikan jawaban.

Contoh:

{
  state: 'CA',
  city: 'mountain_view'
}
Konfigurasi bersifat kumulatif

Pertanyaan konfigurasi baru harus ditambahkan setelah pertanyaan yang sudah ada.

Konfigurasi tidak dapat diubah

Jika pertanyaan konfigurasi ditanyakan sebelumnya, pertanyaan itu harus ada untuk semua panggilan berikutnya. Misalnya, jika pertanyaan konfigurasi A ditanyakan dalam panggilan pertama ke getConfig(), A harus disertakan dalam semua panggilan mendatang yang dihasilkan.

Konfigurasi bersifat idempoten

Panggilan ke getConfig() dengan configParams yang sama harus menampilkan hasil yang sama konfigurasi Anda.

Parameter dinamis tidak dapat diganti

Looker Studio tidak akan mengizinkan parameter konfigurasi dinamis diganti.

Contoh konfigurasi

Dropdown dinamis

Pertanyaan pertama ini meminta pengguna untuk memilih negara bagian, lalu memberikan dropdown kota berdasarkan negara bagian yang dipilih.

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

Jalur Cabang

Tindakan ini akan menimbulkan pertanyaan tambahan jika "Negara" yang dipilih adalah "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();
}