การกำหนดค่าแบบขั้นบันไดช่วยให้เครื่องมือเชื่อมต่อป้อนข้อมูลเครื่องมือเชื่อมต่อแบบไดนามิก การกำหนดค่าตามคำตอบที่ผู้ใช้ระบุ ตัวอย่างเช่น การป้อนข้อมูล "เมือง" เมนูแบบเลื่อนลงหลัง "สถานะ" เลือกเมนูแบบเลื่อนลงแล้ว
ข้อกำหนด
คู่มือนี้จะถือว่าคุณคุ้นเคยกับปลั๊กอินจากชุมชนสำหรับใช้ลิงก์ข้อมูลอยู่แล้ว การกำหนดค่าเอง โปรดดูกำหนดการกำหนดค่าผ่าน 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();
}