תצורה מדורגת

ההגדרה המדורגת מאפשרת למחבר לאכלס את המחבר באופן דינמי על סמך תשובות שהמשתמשים סיפקו. לדוגמה, אכלוס "עיר" התפריט הנפתח אחרי המילה "State" נבחר התפריט הנפתח.

דרישות

המדריך הזה מבוסס על ההנחה שאתם כבר מכירים את הכלי 'מחבר הקהילה' הגדרות אישיות. לרענון, אפשר לעיין במאמר הגדרת תצורה באמצעות 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'
}
ההגדרות האישיות הן נוספות

צריך להוסיף שאלות הגדרה חדשות אחרי השאלות הקיימות.

אי אפשר לשנות הגדרות אישיות

אם נשאלו בעבר שאלה בנושא הגדרה, היא אמורה להופיע עבור את כל השיחות הבאות. לדוגמה, אם נשאלו שאלה א' בנושא הגדרות אישיות בקריאה הראשונה ל-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();
}

הסתעפויות

תוצג שאלה נוספת אם בוחרים באפשרות "Country" (מדינה) הוא 'ארה"ב'.

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