الإعداد المرحلي

يسمح الإعداد المتدرج للموصل بملء الموصِّل ديناميكيًا استنادًا إلى الإجابات المقدمة من المستخدم. على سبيل المثال، تعبئة "مدينة" القائمة المنسدلة بعد "الولاية" القائمة المنسدلة.

المتطلبات

يفترض هذا الدليل أنّك على معرفة جيدة بأداة "موصِّل المنتديات". الإعدادات. راجِع تحديد الإعداد من خلال getConfig لتنشيط ذاكرتك.

نظرة عامة

تتألف الإعدادات المفصَّلة من Looker Studio الذي يطلب رقم getConfig() عدة مرات، وسيعرض الموصل المزيد من أسئلة التهيئة في كل مرة. على كل ستشمل المكالمة إلى getConfig() إجابات المستخدم على آخر getConfig() الاستجابة. تستمر هذه العملية طالما أنك ترسل ردًا يتضمّن setIsSteppedConfig(true)

الإرشادات

اضبط السمة setIsSteppedConfig(true) إلى أن تكتمل عملية الضبط.
ستتصل Looker Studio بـ getConfig() بشكل متكرّر ما دامت يتم ضبط setIsSteppedConfig(true).بعد اكتمال عملية الضبط، تأتي الخطوة الأخيرة يجب ضبط استجابة getConfig() على setIsSteppedConfig(false).
ضبط isDynamic(true) لأسئلة الضبط التي تحدِّد الأسئلة اللاحقة
إذا عدَّل المستخدم حقلاً تم وضع علامة isDynamic عليه، سيتم سيتم محو إدخالات التهيئة في واجهة المستخدم، وسيحتاج المستخدم إلى تهيئة جميع الخطوات اللاحقة. ويساعد ذلك على ضمان عدم إرسال المستخدمين إليك إعدادات غير صالحة.
سيتم تمرير الإجابات المقدَّمة من المستخدم عبر request.configParams.

سيكون "request.configParams" undefined في أوّل getConfig(). إلى الموصل. ستشمل الطلبات اللاحقة الإجابات المقدّمة من المستخدم ككائن يعتمد على معرّفات الضبط أو undefined إذا لم يقدّم المستخدم أي إجابات.

مثال:

{
  state: 'CA',
  city: 'mountain_view'
}
الإعدادات قابلة للإضافة

يجب إضافة أسئلة الضبط الجديدة بعد الأسئلة الحالية.

لا يمكن تغيير الإعدادات

إذا تم طرح سؤال حول الضبط في وقت سابق، يجب أن يكون متاحًا لـ جميع الاتصالات اللاحقة. على سبيل المثال، إذا تم طرح سؤال الإعداد A في المكالمة الأولى إلى getConfig()، يجب تضمين A في جميع عناوين URL القادمة الردود.

الإعدادات غير ثابتة

يجب أن تكون المكالمات الواردة إلى 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();
}