การกําหนดค่าแบบเป็นขั้น

การกำหนดค่าแบบขั้นบันไดช่วยให้เครื่องมือเชื่อมต่อป้อนข้อมูลเครื่องมือเชื่อมต่อแบบไดนามิก การกำหนดค่าตามคำตอบที่ผู้ใช้ระบุ ตัวอย่างเช่น การป้อนข้อมูล "เมือง" เมนูแบบเลื่อนลงหลัง "สถานะ" เลือกเมนูแบบเลื่อนลงแล้ว

ข้อกำหนด

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