ধাপে ধাপে কনফিগারেশন

স্টেপড কনফিগারেশন একটি সংযোগকারীকে ব্যবহারকারী-প্রদত্ত উত্তরগুলির উপর ভিত্তি করে সংযোগকারী কনফিগারেশনকে গতিশীলভাবে পপুলেট করার অনুমতি দেয়। উদাহরণস্বরূপ, একটি "রাজ্য" ড্রপডাউন নির্বাচন করার পরে একটি "শহর" ড্রপডাউন তৈরি করা।

প্রয়োজনীয়তা

এই নির্দেশিকা অনুমান করে আপনি ইতিমধ্যেই কমিউনিটি সংযোগকারী কনফিগারেশনের সাথে পরিচিত৷ একটি রিফ্রেশার জন্য getConfig এর মাধ্যমে কনফিগারেশন সংজ্ঞায়িত দেখুন।

ওভারভিউ

স্টেপড কনফিগারেশনে রয়েছে Looker Studio কল করা getConfig() একাধিকবার, এবং আপনার কানেক্টর প্রতিবার আরও কনফিগারেশন প্রশ্ন ফেরত দেয়। getConfig() এর প্রতিটি কলে ব্যবহারকারীর শেষ getConfig() প্রতিক্রিয়ার উত্তর অন্তর্ভুক্ত থাকবে। যতক্ষণ না আপনি setIsSteppedConfig(true) দিয়ে একটি প্রতিক্রিয়া ফেরত দেন ততক্ষণ এই প্রক্রিয়াটি অব্যাহত থাকে।

নির্দেশিকা

কনফিগারেশন সম্পূর্ণ না হওয়া পর্যন্ত setIsSteppedConfig(true) সেট করুন
যতক্ষণ পর্যন্ত setIsSteppedConfig(true) সেট থাকে ততক্ষণ Looker Studio বারবার getConfig() কল করবে। কনফিগারেশন সম্পূর্ণ হলে, চূড়ান্ত getConfig() প্রতিক্রিয়া setIsSteppedConfig(false) সেট করা উচিত।
কনফিগারেশন প্রশ্নগুলির জন্য isDynamic(true) সেট করুন যা পরবর্তী প্রশ্নগুলি নির্ধারণ করে
যদি isDynamic চিহ্নিত একটি ক্ষেত্র ব্যবহারকারী দ্বারা পরিবর্তিত হয়, তাহলে পরবর্তী কনফিগারেশন এন্ট্রিগুলি UI এ সাফ করা হবে এবং ব্যবহারকারীকে পরবর্তী সমস্ত ধাপগুলি কনফিগার করতে হবে৷ এটি নিশ্চিত করতে সহায়তা করে যে ব্যবহারকারীরা আপনাকে একটি অবৈধ কনফিগারেশন পাঠাবেন না।
ব্যবহারকারী-প্রদত্ত উত্তরগুলি request.configParams এর মাধ্যমে পাস করা হবে।

request.configParams আপনার সংযোগকারীর প্রথম getConfig() অনুরোধের জন্য undefined হবে। পরবর্তী অনুরোধে ব্যবহারকারী-প্রদত্ত উত্তরগুলিকে কনফিগারেশন আইডি দ্বারা চাবিকৃত অবজেক্ট হিসাবে অন্তর্ভুক্ত করা হবে বা ব্যবহারকারী কোনো উত্তর না দিলে undefined

উদাহরণ:

{
  state: 'CA',
  city: 'mountain_view'
}
কনফিগারেশন যোগ করা হয়

বিদ্যমান প্রশ্নগুলির পরে নতুন কনফিগারেশন প্রশ্ন যোগ করা উচিত।

কনফিগারেশন পরিবর্তন করা যাবে না

যদি একটি কনফিগারেশন প্রশ্ন আগে জিজ্ঞাসা করা হয়, এটি পরবর্তী সমস্ত কলের জন্য উপস্থিত থাকা উচিত। উদাহরণস্বরূপ, যদি getConfig() এ প্রথম কলে কনফিগারেশন প্রশ্ন A জিজ্ঞাসা করা হয়, তাহলে ভবিষ্যতের সমস্ত প্রতিক্রিয়াতে A অন্তর্ভুক্ত করা উচিত।

কনফিগারেশন অদম্য হয়

একই configParams সাথে getConfig() এ করা কল একই কনফিগারেশন ফেরত দিতে হবে।

গতিশীল পরামিতি ওভাররাইডযোগ্য হতে পারে না

লুকার স্টুডিও ডায়নামিক কনফিগারেশন প্যারামিটার ওভাররাইড করার অনুমতি দেবে না।

উদাহরণ কনফিগারেশন

গতিশীল ড্রপডাউন

এই প্রথম প্রশ্নটি একজন ব্যবহারকারীকে একটি রাজ্য নির্বাচন করতে অনুরোধ করে, তারপরে নির্বাচিত রাজ্যের উপর ভিত্তি করে গতিশীলভাবে একটি শহরের ড্রপডাউন প্রদান করে।

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();
}