步驟設定可讓連接器動態填入連接器 建立 AI 開發原則審查與設定例如:填入「城市」 「狀態」後方的下拉式選單下拉式選單
需求條件
本指南假設您已熟悉「社群連接器」 儲存空間設定如需複習,請參閱透過 getConfig 定義設定。
總覽
經過階梯的設定,包含呼叫 getConfig()
多個 Looker Studio 的 Looker Studio
時,連接器每次都會傳回更多設定問題。每項
呼叫 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()
應會傳回相同的結果 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定- 無法覆寫動態參數
Looker Studio 不允許啟用動態設定參數 overridden。
設定範例
動態下拉式選單
第一個問題會提示使用者選取狀態,然後動態提供 以所選州別為依據的城市下拉式選單。
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();
}