การกำหนดค่าแบบขั้นบันไดช่วยให้เครื่องมือเชื่อมต่อป้อนข้อมูลเครื่องมือเชื่อมต่อแบบไดนามิก การกำหนดค่าตามคำตอบที่ผู้ใช้ระบุ ตัวอย่างเช่น การป้อนข้อมูล "เมือง" เมนูแบบเลื่อนลงหลัง "สถานะ" เลือกเมนูแบบเลื่อนลงแล้ว
ข้อกำหนด
คู่มือนี้จะถือว่าคุณคุ้นเคยกับปลั๊กอินจากชุมชนสำหรับใช้ลิงก์ข้อมูลอยู่แล้ว การกำหนดค่าเอง โปรดดูกำหนดการกำหนดค่าผ่าน getConfig เพื่อทบทวน
ภาพรวม
การกำหนดค่าแบบขั้นบันไดประกอบด้วย Looker Studio ที่เรียกใช้ getConfig()
หลายรายการ
หลายรายการ และเครื่องมือเชื่อมต่อจะแสดงคำถามสำหรับการกำหนดค่ามากขึ้นในแต่ละครั้ง ชิ้น
การเรียกไปยัง getConfig()
จะรวมคำตอบของผู้ใช้ในช่วง getConfig()
สุดท้าย
คำตอบ กระบวนการนี้จะดำเนินต่อไป หากคุณตอบกลับด้วย
setIsSteppedConfig(true)
หลักเกณฑ์
- ตั้งค่า
setIsSteppedConfig(true)
จนกว่าการกำหนดค่าจะเสร็จสมบูรณ์ - Looker Studio จะเรียกใช้
getConfig()
ซ้ำตราบใดที่ ตั้งค่าsetIsSteppedConfig(true)
แล้ว เมื่อกำหนดค่าเสร็จ ตัวแปรสุดท้าย การตอบกลับgetConfig()
ควรตั้งค่าsetIsSteppedConfig(false)
- ตั้งค่า
isDynamic(true)
สำหรับคำถามเกี่ยวกับการกำหนดค่าที่จะถามในภายหลัง - ถ้าช่องที่มีเครื่องหมาย
isDynamic
ได้รับการแก้ไขโดยผู้ใช้ ให้ดำเนินการดังนี้ รายการการกำหนดค่าจะถูกล้างออกจาก UI และผู้ใช้จะต้อง กำหนดค่าขั้นตอนที่ตามมาทั้งหมด ซึ่งจะช่วยให้แน่ใจว่าผู้ใช้จะไม่ส่ง การกำหนดค่าไม่ถูกต้อง - ระบบจะส่งคำตอบที่ผู้ใช้ให้ทาง
request.configParams
request.configParams
จะมีราคาundefined
สำหรับgetConfig()
แรก ไปยังเครื่องมือเชื่อมต่อของคุณ คำขอต่อๆ มาจะรวม คำตอบที่ผู้ใช้ระบุเป็นออบเจ็กต์ที่รวมรหัสการกำหนดค่าหรือundefined
ถ้าผู้ใช้ไม่ได้ระบุคำตอบไว้ตัวอย่าง
{ state: 'CA', city: 'mountain_view' }
- การกําหนดค่าเป็นส่วนเสริม
ควรเพิ่มคำถามการกำหนดค่าใหม่ต่อจากคำถามที่มีอยู่
- ไม่สามารถเปลี่ยนแปลงการกำหนดค่าได้
หากมีการถามคำถามเกี่ยวกับการกำหนดค่าก่อนหน้านี้ ควรถามสำหรับ การโทรครั้งต่อๆ มาทั้งหมด เช่น หากมีการถามคำถามเกี่ยวกับการกำหนดค่า A ในการเรียก
getConfig()
ครั้งแรก ควรใส่ A ไว้ด้วยในอนาคตทั้งหมด คำตอบ- การกำหนดค่าเป็นนิจพล
การโทรไปยัง
getConfig()
ด้วยconfigParams
เดียวกันควรส่งคืนผลลัพธ์เดียวกัน การกำหนดค่า- พารามิเตอร์แบบไดนามิกลบล้างไม่ได้
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();
}
เส้นทางการแตกแขนง
การดำเนินการนี้จะถามคำถามเพิ่มเติมหาก "ประเทศ" ที่เลือก คือ "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();
}