Konfigurasi yang diberi langkah memungkinkan konektor mengisi konfigurasi konektor secara dinamis berdasarkan jawaban yang diberikan pengguna. Misalnya, mengisi {i>dropdown <i}"City"{i> <i}setelah {i>dropdown <i}"{i>State<i}" dipilih.
Persyaratan
Panduan ini mengasumsikan bahwa Anda sudah memahami konfigurasi Konektor Komunitas. Lihat mendefinisikan konfigurasi melalui getConfig untuk mengingat kembali.
Ringkasan
Konfigurasi langkah terdiri dari Looker Studio yang memanggil getConfig()
beberapa kali, dan konektor Anda yang menampilkan lebih banyak pertanyaan konfigurasi setiap waktu. Setiap
panggilan ke getConfig()
akan menyertakan jawaban pengguna atas respons getConfig()
terakhir. Proses ini berlanjut selama Anda menampilkan respons dengan setIsSteppedConfig(true)
.
Panduan
- Tetapkan
setIsSteppedConfig(true)
hingga konfigurasi selesai - Looker Studio akan berulang kali memanggil
getConfig()
selamasetIsSteppedConfig(true)
ditetapkan.Setelah konfigurasi selesai, responsgetConfig()
akhir harus menetapkansetIsSteppedConfig(false)
. - Tetapkan
isDynamic(true)
untuk pertanyaan konfigurasi yang menentukan pertanyaan berikutnya - Jika kolom bertanda
isDynamic
diubah oleh pengguna, entri konfigurasi berikutnya akan dihapus di UI, dan pengguna harus mengonfigurasi semua langkah berikutnya. Hal ini membantu memastikan pengguna tidak mengirimi Anda konfigurasi yang tidak valid. - Jawaban yang diberikan pengguna akan diteruskan melalui
request.configParams
. request.configParams
akan menjadiundefined
untuk permintaangetConfig()
pertama ke konektor Anda. Permintaan berikutnya akan menyertakan jawaban yang diberikan pengguna sebagai objek yang dikunci oleh ID konfigurasi atauundefined
jika pengguna tidak memberikan jawaban.Contoh:
{ state: 'CA', city: 'mountain_view' }
- Konfigurasi bersifat tambahan
Pertanyaan konfigurasi baru harus ditambahkan setelah pertanyaan yang ada.
- Konfigurasi tidak dapat diubah
Jika pertanyaan konfigurasi ditanyakan sebelumnya, pertanyaan tersebut harus ada untuk semua panggilan berikutnya. Misalnya, jika pertanyaan konfigurasi A ditanyakan pada panggilan pertama ke
getConfig()
, A harus disertakan dalam semua respons mendatang.- Konfigurasi bersifat idempoten
Panggilan ke
getConfig()
denganconfigParams
yang sama akan menampilkan konfigurasi yang sama.- 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 secara dinamis menyediakan 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 Percabangan
Perintah ini akan mengajukan pertanyaan tambahan jika "Negara" yang dipilih adalah "AS".
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();
}