Cấu hình theo bậc cho phép trình kết nối điền sẵn trình kết nối một cách linh động dựa trên câu trả lời do người dùng cung cấp. Ví dụ: điền sẵn một "Thành phố" trình đơn thả xuống sau "Trạng thái" đã chọn trình đơn thả xuống.
Yêu cầu
Hướng dẫn này giả định rằng bạn đã quen thuộc với Trình kết nối cộng đồng . Xem xác định cấu hình qua getConfig để ôn lại kiến thức.
Tổng quan
Cấu hình theo bước bao gồm Looker Studio gọi getConfig()
nhiều
và trình kết nối của bạn trả về nhiều câu hỏi về cấu hình hơn mỗi lần. Một
cuộc gọi đến getConfig()
sẽ bao gồm câu trả lời của người dùng cho getConfig()
cuối cùng
của bạn. Quá trình này sẽ tiếp tục, miễn là bạn trả lời câu trả lời có
setIsSteppedConfig(true)
.
Nguyên tắc
- Đặt
setIsSteppedConfig(true)
cho đến khi định cấu hình xong - Looker Studio sẽ liên tục gọi
getConfig()
miễn là Đã đặtsetIsSteppedConfig(true)
.Sau khi định cấu hình xong, bước cuối cùng Phản hồigetConfig()
phải đặtsetIsSteppedConfig(false)
. - Đặt
isDynamic(true)
cho các câu hỏi về cấu hình để xác định các câu hỏi sau này - Nếu người dùng sửa đổi trường đánh dấu
isDynamic
, thì sẽ bị xoá trong giao diện người dùng và người dùng cần định cấu hình tất cả các bước tiếp theo. Điều này giúp đảm bảo người dùng không gửi cho bạn cấu hình không hợp lệ. - Câu trả lời do người dùng cung cấp sẽ được chuyển qua
request.configParams
. request.configParams
sẽ có giáundefined
chogetConfig()
đầu tiên tới trình kết nối của bạn. Các yêu cầu tiếp theo sẽ bao gồm câu trả lời do người dùng cung cấp dưới dạng đối tượng được khoá bởi mã cấu hình hoặcundefined
nếu người dùng không cung cấp câu trả lời nào.Ví dụ:
{ state: 'CA', city: 'mountain_view' }
- Cấu hình có tính bổ sung
Bạn nên thêm các câu hỏi mới về cấu hình sau các câu hỏi hiện có.
- Không thể thay đổi cấu hình
Nếu bạn từng đặt câu hỏi về cấu hình, câu hỏi đó nên hiển thị cho tất cả các lệnh gọi tiếp theo. Ví dụ: nếu có câu hỏi về cấu hình A trong lệnh gọi đầu tiên đến
getConfig()
, A phải được đưa vào tất cả tương lai phản hồi.- Cấu hình không thay đổi
Các lệnh gọi đến
getConfig()
có cùngconfigParams
sẽ trả về cùng một kết quả .- Không được ghi đè thông số động
Looker Studio sẽ không cho phép dùng các thông số cấu hình động bị ghi đè.
Thiết lập mẫu
Trình đơn thả xuống linh động
Câu hỏi đầu tiên này nhắc người dùng chọn một trạng thái, sau đó cung cấp một cách linh động một thành phố thả xuống dựa trên tiểu bang đã chọn.
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();
}
Đường dẫn phân nhánh
Thao tác này sẽ đặt thêm câu hỏi nếu "Quốc gia" đã chọn là "Hoa Kỳ".
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();
}