תצורה מדורגת

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

דרישות

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

ההגדרות האישיות הן אידמפוטנטיות

קריאות ל-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();
}

נתיבים מסתעפים

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

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