स्टेप्ड कॉन्फ़िगरेशन

स्टेप-बाय-स्टेप कॉन्फ़िगरेशन की मदद से, कनेक्टर को उपयोगकर्ता के दिए गए जवाबों के आधार पर, कनेक्टर कॉन्फ़िगरेशन को डाइनैमिक तरीके से भरने की अनुमति मिलती है. उदाहरण के लिए, "राज्य" ड्रॉपडाउन चुनने के बाद, "शहर" ड्रॉपडाउन को अपने-आप भरना.

ज़रूरी शर्तें

यह गाइड इस बात को ध्यान में रखकर बनाई गई है कि आपको कम्यूनिटी कनेक्टर कॉन्फ़िगरेशन के बारे में पहले से जानकारी है. दोबारा जानकारी पाने के लिए, getConfig के ज़रिए कॉन्फ़िगरेशन तय करना लेख पढ़ें.

खास जानकारी

स्टेप किए गए कॉन्फ़िगरेशन में, Data Studio getConfig() को कई बार कॉल किया जाता है. साथ ही, आपका कनेक्टर हर बार कॉन्फ़िगरेशन से जुड़े ज़्यादा सवाल पूछता है. getConfig() को किए गए हर कॉल में, उपयोगकर्ता के getConfig() के पिछले जवाब शामिल होंगे. जब तक setIsSteppedConfig(true) के साथ जवाब दिया जाता रहेगा, तब तक यह प्रोसेस जारी रहेगी.

दिशा-निर्देश

कॉन्फ़िगरेशन पूरा होने तक setIsSteppedConfig(true) सेट करें
Data Studio, getConfig() को बार-बार कॉल करेगा, जब तक कि setIsSteppedConfig(true) सेट है.कॉन्फ़िगरेशन पूरा होने के बाद, getConfig() के फ़ाइनल जवाब में setIsSteppedConfig(false) सेट होना चाहिए.
कॉन्फ़िगरेशन से जुड़े उन सवालों के लिए isDynamic(true) सेट करें जिनके जवाब के आधार पर बाद के सवाल तय होते हैं
अगर उपयोगकर्ता, isDynamic के तौर पर मार्क किए गए किसी फ़ील्ड में बदलाव करता है, तो यूज़र इंटरफ़ेस (यूआई) में बाद की कॉन्फ़िगरेशन एंट्री मिट जाएंगी. साथ ही, उपयोगकर्ता को बाद के सभी चरणों को कॉन्फ़िगर करना होगा. इससे यह पक्का करने में मदद मिलती है कि उपयोगकर्ता आपको अमान्य कॉन्फ़िगरेशन न भेजें.
उपयोगकर्ता के दिए गए जवाब, request.configParams के ज़रिए पास किए जाएंगे.

आपके कनेक्टर के लिए, पहली getConfig() अनुरोधों के लिए request.configParams होगा.undefined इसके बाद के अनुरोधों में, उपयोगकर्ता के दिए गए जवाब शामिल होंगे. इन्हें कॉन्फ़िगरेशन आईडी के हिसाब से ऑब्जेक्ट के तौर पर सेव किया जाएगा. अगर उपयोगकर्ता कोई जवाब नहीं देता है, तो undefined शामिल किया जाएगा.

उदाहरण:

{
  state: 'CA',
  city: 'mountain_view'
}
कॉन्फ़िगरेशन को जोड़ा जाता है

कॉन्फ़िगरेशन से जुड़े नए सवालों को मौजूदा सवालों के बाद जोड़ा जाना चाहिए.

कॉन्फ़िगरेशन में बदलाव नहीं किया जा सकता

अगर कॉन्फ़िगरेशन से जुड़ा कोई सवाल पहले पूछा गया था, तो वह बाद के सभी कॉल के लिए मौजूद होना चाहिए. उदाहरण के लिए, अगर कॉन्फ़िगरेशन से जुड़ा सवाल A, getConfig() को पहली बार कॉल करने पर पूछा गया था, तो A को आने वाले समय में मिलने वाले सभी जवाबों में शामिल किया जाना चाहिए.

कॉन्फ़िगरेशन, आइडेमपोटेंट होते हैं

एक ही configParams के लिए getConfig() को किए गए कॉल से, एक जैसा कॉन्फ़िगरेशन मिलना चाहिए.

डाइनैमिक पैरामीटर को बदला नहीं जा सकता

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

ब्रांचिंग पाथ

अगर चुना गया "देश", "अमेरिका" है, तो इसमें एक और सवाल पूछा जाएगा.

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