Cấu hình theo từng bước

Cấu hình dạng bậc cho phép trình kết nối tự động điền cấu hình trình kết nối dựa trên câu trả lời do người dùng cung cấp. Ví dụ: điền sẵn trình đơn thả xuống "Thành phố" sau khi chọn trình đơn thả xuống "Trạng thái".

Yêu cầu

Hướng dẫn này giả định rằng bạn đã quen thuộc với các cấu hình Trình kết nối cộng đồng. Hãy xem phần 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 lần 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ỗi lệnh gọi đến getConfig() sẽ bao gồm câu trả lời của người dùng cho phản hồi getConfig() gần đây nhất. Quá trình này sẽ tiếp tục miễn là bạn trả về phản hồi bằng setIsSteppedConfig(true).

Nguyên tắc

Đặt setIsSteppedConfig(true) cho đến khi cấu hình hoàn tất
Looker Studio sẽ liên tục gọi getConfig() miễn là bạn đã đặt setIsSteppedConfig(true).Sau khi quá trình định cấu hình hoàn tất, phản hồi cuối cùng của getConfig() sẽ có giá trị là setIsSteppedConfig(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 một trường được đánh dấu là isDynamic, thì các mục nhập cấu hình tiếp theo sẽ bị xoá trong giao diện người dùng và người dùng sẽ phải định cấu hình tất cả các bước tiếp theo. Việc 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ẽ là undefined đối với yêu cầu getConfig() đầu tiên gửi đến trình kết nối. 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 một đối tượng được khoá bằng mã cấu hình hoặc undefined nếu người dùng không cung cấp bất kỳ 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 sẽ thêm các câu hỏi mới về cấu hình sau những câu hỏi hiện có.

Không thể thay đổi cấu hình

Nếu một câu hỏi về cấu hình đã được đặt ra trước đó, câu hỏi đó sẽ xuất hiện trong tất cả các lệnh gọi tiếp theo. Ví dụ: nếu câu hỏi cấu hình A được đặt ra trong lệnh gọi đầu tiên đến getConfig(), thì A sẽ được đưa vào tất cả các phản hồi sau này.

Cấu hình không thay đổi

Các lệnh gọi đến getConfig() có cùng configParams sẽ trả về cùng một cấu hình.

Không thể ghi đè thông số động

Looker Studio sẽ không cho phép ghi đè các thông số cấu hình động.

Cấu hình 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 tiểu bang, sau đó tự động cung cấp một trình đơn thả xuống về thành phố 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 ra một câu hỏi bổ sung nếu "Quốc gia" được 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();
}