Omówienie interfejsu API
dscc
(komponent społeczności Looker Studio) to biblioteka, która ułatwia tworzenie komponentów społeczności dla Looker Studio. Kod źródłowy znajdziesz w GitHub.
dscc
udostępnia 3 funkcje: getWidth()
, getHeight()
i subscribeToData()
.
getWidth()
Nazwa | Parametry | Typ zwracanej wartości | Opis |
---|---|---|---|
getWidth() | Brak | number
|
Zwraca szerokość elementu iframe w pikselach |
Jak korzystać z aplikacji getWidth()
// to get the width of the iframe
var width = dscc.getWidth();
getHeight()
Nazwa | Parametry | Typ zwracanej wartości | Opis |
---|---|---|---|
getHeight() | Brak | int
|
Zwraca wysokość elementu iframe w pikselach |
Jak korzystać z aplikacji getHeight()
// to get the height of the iframe
var height = dscc.getHeight();
sendInteraction()
Funkcja sendInteraction()
wysyła do Looker Studio komunikat z danymi filtra.
Parametry:
Nazwa | Typ | Opis |
---|---|---|
actionID | string
|
Ciąg znaków odpowiadający identyfikatorowi akcji w konfiguracji, |
interakcja | enum(InteractionType)
|
Informuje Looker Studio o interakcji |
dane | object(InteractionData)
|
Dostarcza danych niezbędnych do interakcji |
InteractionType
Obecnie jedyną prawidłową wartością w polu InteractionType
jest FILTER
.
Nazwa | Typ | Opis |
---|---|---|
dscc.InteractionType.FILTER | Enum | Opisuje interakcję FILTER |
Jak korzystać z aplikacji sendInteraction
// the actionID can either be hardcoded or parsed from the returned data
var actionId = "interactionConfigId";
// dscc provides enums for the interaction types
var FILTER = dscc.InteractionType.FILTER;
var fieldID = "qt_m9dtntutsb";
var dataValue = "Asia";
// sendInteraction expects data that tells you the concepts and the values of
// those concepts to use in constructing a filter.
var interactionData = {
"concepts": [fieldId],
"values": [[dataValue]]
}
dscc.sendInteraction(actionId, FILTER, interactionData);
interactionData
var interactionData = {
"concepts": array(fieldId),
"values": array(array(dataValue))
}
Pole | Typ | Opis |
---|---|---|
koncepcje | Array |
Tablica fieldIds |
wartości | Array<Array>
|
Zagnieżdżona tablica wartości danych. Każda tablica podrzędna powinna mieć długość tablicy concepts .
Każda wartość w tablicy podrzędnej odpowiada wartości wymiaru. |
Przykładowy interactionData
:
var interactionData = {
"concepts": ["dim1Id", "dim2Id"],
"values": [
["dim1Val1", "dim2Val1"],
["dim1Val2", "dim2Val2"]
]
}
Użycie polecenia dscc.sendInteraction
z powyższym elementem interactionData
jest równoważne z tą instrukcją SQL:
SELECT data WHERE
(dim1 == dim1Val1 AND dim2 == dim2Val1)
OR
(dim1 == dim1Val2 AND dim2 == dim2Val2);
clearInteraction()
Funkcja clearInteraction()
wysyła do Looker Studio komunikat, aby wyczyścić filtr ustawiony wcześniej przez tę wizualizację.
Parametry:
Nazwa | Typ | Opis |
---|---|---|
actionID | string
|
Ciąg tekstowy odpowiadający wartości actionId w konfiguracji |
interakcja | enum(InteractionType)
|
Informuje Looker Studio o interakcji |
Jak korzystać z aplikacji clearInteraction()
// the actionID can either be hardcoded or parsed from the returned data
var actionId = "interactionConfigId";
// dscc provides enums for the interaction types
var FILTER = dscc.InteractionType.FILTER;
dscc.clearInteraction(actionId, FILTER);
subscribeToData(callback, options)
Funkcja subscribeToData()
subskrybuje wiadomości z Looker Studio.
Parametry:
Nazwa | Typ | Opis |
---|---|---|
wywołanie zwrotne(dane) | function
|
Funkcja, która pobiera dane zwrócone przez subscribeToData . |
Opcje | object |
Określa wymagany format zwracanych danych |
Obiekt opcji wygląda tak:
{
transform: dscc.tableTransform | dscc.objectTransform
}
Zwracana wartość:
Typ | Opis |
---|---|
function |
Anuluje subskrypcję wiadomości od użytkownika callback z usługi Looker Studio |
Jak korzystać z aplikacji subscribeToData()
// define and use a callback
var unsubscribe = dscc.subscribeToData(function(data){
// console.log the returned data
console.log(data);
}, {transform: dscc.tableTransform});
// to unsubscribe
unsubscribe();
data
To obiekt przekazany do callback
zarejestrowany w dscc.subscribeToData
. Te pola są wspólne dla pól dscc.objectFormat
i dscc.tableFormat
.
{
fields: object(fieldsByConfigId),
style: object(styleById),
interactions: object(interactionsById),
theme: object(themeStyle),
tables: object(tablesById),
dateRanges: object(dateRangesById)
}
Pole | Typ | Opis |
---|---|---|
pola | object(fieldsByConfigId)
|
Obiekt zawierający pola zindeksowane według identyfikatora konfiguracji |
styl | object(styleById)
|
Obiekt zawierający obiekty style zindeksowane przez ich identyfikator configId |
Interakcje | object(interactionsById)
|
obiekt zawierający obiekty interakcji, |
motyw | themeStyle
|
Obiekt themeStyle zawierający informacje o stylu motywu na potrzeby raportu |
tabele | object(tablesById)
|
Obiekt zawierający tableObjects |
dateRanges | object(dateRangesById)
|
Obiekt zawierający dateRanges. |
fieldsByConfigId
{
configId: array(field)
}
Obiekt fieldsByConfigId
zawiera tablice obiektów field indeksowanych według parametru „id” zdefiniowanego w konfiguracji wizualizacji. W tym obiekcie znajduje się 1 wpis na każde dataField
zdefiniowane w konfiguracji.
Pole | Typ | Opis |
---|---|---|
configId | Array<field> |
Tablica pól powiązanych z polem dataField |
pole
{
id: fieldId,
name: string,
description: string,
type: fieldType,
concept: enum(conceptType)
}
Obiekt field
dostarcza informacje o polu wybranym przez użytkownika w panelu właściwości.
Pole | Typ | Opis |
---|---|---|
id | string |
Identyfikator pola wygenerowany przez Looker Studio |
nazwa | string |
Zrozumiała dla człowieka nazwa pola |
opis | string |
Opis pola |
typ | enum(fieldType) |
semanticType pola, |
pomysł : koncepcja | enum(conceptType) |
conceptType pola, |
styleById
{
configId: styleValue
}
Obiekt styleById
dostarcza informacje o stylu zindeksowane według parametru „id” zdefiniowanego w konfiguracji wizualizacji.
Pole | Typ | Opis |
---|---|---|
configId | styleValue
|
Obiekt zawierający wartość stylu i zdefiniowaną przez konfigurację wartość domyślnego stylu. |
styleValue
{
value: string | object | bool | number,
defaultValue: string | object | bool | number
}
Obiekt styleValue
zawiera zarówno wartość stylu wybraną przez użytkownika, jak i wartość domyślną zdefiniowaną w konfiguracji. Rodzaje value
i defaultValue
zależą od elementu stylu.
Pole | Typ | Opis |
---|---|---|
value | string OR object OR bool OR
number
|
Wartość elementu stylu powstała po wybraniu opcji przez użytkownika w panelu właściwości |
defaultValue | string OR object OR bool OR
number
|
Wartość domyślna elementu stylu określonego w konfiguracji wizualizacji, |
interactionsById
{
}
Obiekt interactionsById
dostarcza dane interakcji zindeksowane przez interactionId
konfigurację wizualizacji.
Indeks | Typ | Opis |
---|---|---|
configId | interaction
|
Obiekt zawierający dane powiązane z interakcją |
interactionField
{
value: object(interactionValue),
supportedActions: array(InteractionType)
}
Obiekt interactionField
zawiera tablicę obsługiwanych działań zdefiniowanych w konfiguracji, a także wybrane przez użytkownika wartości interakcji.
Pole | Typ | Opis |
---|---|---|
value | string OR object OR
bool OR number
|
Wartość elementu stylu powstała po wybraniu opcji przez użytkownika w panelu właściwości |
supportedActions | Array<InteractionType>
|
Działania obsługiwane przez tę interakcję, określone w konfiguracji |
interactionValue
Obiekt interactionValue
podaje wybrane przez użytkownika wartości typu interakcji. Jeśli klucz data
istnieje, obiekt InteractionData
odzwierciedla bieżący stan filtra. Jeśli klucz data
nie istnieje, wizualizacja nie jest obecnie skonfigurowana jako filtr.
{
type: enum(InteractionType)
data: object(interactionData) | None
}
Pole | Typ | Opis |
---|---|---|
typ | enum(InteractionType)
|
wybrany przez użytkownika InteractionType, |
dane | object(InteractionData)
|
Dane powiązane z bieżącym stanem filtra. Jeśli filtr jest aktualnie wyczyszczony, klucz ten nie istnieje. |
motyw
{
fillColor: {
color: string,
opacity: number
},
fontColor: {
color: string,
opacity: number
},
accentFillColor: {
color: string,
opacity: number
},
accentFontColor: {
color: string,
opacity: number
},
fontFamily: string,
accentFontFamily: string,
increaseColor: {
color: string,
opacity: number
},
decreaseColor: {
color: string,
opacity: number
},
gridColor: {
color: string,
opacity: number
},
seriesColor: [
{
color: string,
opacity: number
}
]
}
Obiekt themeStyle
przekazuje do wizualizacji informacje o temacie raportu.
Pole | Typ | Opis |
---|---|---|
fillColor | object
|
Obiekt formatu {color:
string, opacity: number} |
fontColor | object
|
Obiekt formatu {color:
string, opacity: number} |
accentFillColor | object
|
Obiekt formatu {color:
string, opacity: number} |
accentFontColor | object
|
Obiekt formatu {color:
string, opacity: number} |
fontFamily | string |
Ciąg opisujący rodzinę czcionek |
accentFontFamily | string
|
Ciąg opisujący rodzinę czcionek akcentujących |
increaseColor | object
|
Obiekt formatu {color:
string, opacity: number} |
decreaseColor | object
|
Obiekt formatu {color:
string, opacity: number} |
gridColor | object
|
Obiekt formatu {color:
string, opacity: number} |
seriesColor | Array<object>
|
Tablica obiektów w formacie {color: string, opacity:
number} |
tablesById
{
"DEFAULT": object(tableObject),
"COMPARISON": object(tableObject) | undefined
}
Pole tableObject
zawiera informacje o nagłówku i danych w każdym wierszu. Wartość „DEFAULT” zawsze zwraca dane, a pole „PORÓWNANIE” jest wypełniane tylko wtedy, gdy użytkownik skonfiguruje dane za pomocą wierszy porównania.
Format obiektu tableObject jest jedyną różnicą między dscc.tableFormat
a dscc.objectFormat
.
Pole | Typ | Opis |
---|---|---|
"DEFAULT" | object(tableObject) OR
Array<objectRow>
|
Element tableObject powiązany z danymi, które użytkownik dodaje do wizualizacji |
„PORÓWNANIE” | object(tableObject) OR
Array<objectRow>
|
tableObject powiązany z danymi do porównania dat (w stosownych przypadkach). |
dateRangesById
{
"DEFAULT": object(dateRange),
"COMPARISON": object(dateRange)
}
Obiekt dateRangesById
zawiera informacje o domyślnych zakresach dat i porównaniach. Jeśli nie ma zakresów dat, obiekt będzie pusty. Pola DEFAULT
i COMPARISON
będą wypełniane tylko wtedy, gdy użytkownik skonfiguruje odpowiednie zakresy dat. Dane w zakresach dat są powiązane z danymi domyślnymi i porównawczymi, jak określono w polu tablesById.
Pole | Typ | Opis |
---|---|---|
"DEFAULT" | object(dateRange)
|
Wartość dateRange powiązana z domyślnym zakresem dat (w stosownych przypadkach). |
„PORÓWNANIE” | object(dateRange)
|
Wartość dateRange powiązana z zakresem dat porównawczym (w stosownych przypadkach). |
dateRange
{
start: string,
end: string
}
Obiekt dateRange
zawiera informacje o datach rozpoczęcia i zakończenia domyślnego lub porównawczego zakresu dat.
Pole | Typ | Opis |
---|---|---|
start | string |
Data rozpoczęcia zakresu dat w formacie RRRRMMDD. |
end | string |
Data zakończenia zakresu dat w formacie RRRRMMDD. |
Plik referencyjny tableFormat
tableObject
{
headers: array(object),
rows: array(array)
}
Pole | Typ | Opis |
---|---|---|
headers | Array
|
Tablica obiektów fields. Te obiekty pól mają dodatkowo właściwość configId , która odpowiada identyfikatorom z konfiguracji. |
wiersze | Array<Array> |
Tablica tablic: każda tablica jest wierszem danych |
Przykładowe dane: tableFormat
To jest przykładowy element data
zwrócony przy użyciu funkcji dscc.subscribeToData()
z opcją dscc.tableFormat
.
{
"tables": {
"DEFAULT": {
"headers": [{
"id": "qt_ky8sltutsb",
"name": "dimension",
"type": "TEXT",
"concept": "DIMENSION",
"configId": "configId1"
}, {
"id": "qt_b5bvmtutsb",
"name": "second dim",
"type": "TEXT",
"concept": "DIMENSION"
"configId": "configId1"
}, {
"id": "qt_m9dtntutsb",
"name": "metric",
"type": "NUMBER",
"concept": "METRIC",
"configId": "configId2"
}],
"rows": [
["Week 4", "lm", 55]
]
},
"COMPARISON": {
"headers": [{
"id": "qt_ky8sltutsb",
"name": "dimension",
"type": "TEXT",
"concept": "DIMENSION",
"configId": "configId1"
}, {
"id": "qt_b5bvmtutsb",
"name": "second dim",
"type": "TEXT",
"concept": "DIMENSION"
"configId": "configId1"
}, {
"id": "qt_m9dtntutsb",
"name": "metric",
"type": "NUMBER",
"concept": "METRIC",
"configId": "configId2"
}],
"rows": [
["Week 5", "no", 123]
]
}
},
"fields": {
"configId1": [
{
"id": "qt_ky8sltutsb",
"name": "week",
"type": "TEXT",
"concept": "DIMENSION"
},
{
"id": "qt_b5bvmtutsb",
"name": "textId",
"type": "TEXT",
"concept": "DIMENSION"
}
],
"configId2": [
{
"id": "qt_m9dtntutsb",
"name": "orders",
"type": "NUMBER",
"concept": "METRIC"
}
]
},
"style": {
"nodeColor": {
"value": {
"color": "#000000"
}
}
},
"theme": {},
"dateRanges": {
"DEFAULT": {
"start": "20210501",
"end": "20210531"
},
"COMPARISON": {
"start": "20200501",
"end": "20200531"
}
},
"interactions": {
"onClick": {
"value": {
"type": "FILTER",
"data": {
"concepts": [
"qt_h6oibrb6wb",
"qt_i6oibrb6wb"
],
"values": [
[
"Afternoon",
"Sunday"
],
[
"Afternoon",
"Thursday"
],
[
"Morning",
"Tuesday"
]
]
}
},
"supportedActions": [
"FILTER"
]
}
}
}
Odwołanie do obiektuObjectFormat
objectRow
{
configId1: array(string | bool | number),
configId2: array(string | bool | number)
}
Pole | Typ | Opis |
---|---|---|
configId | tablica | tablica wartości powiązanych z konkretnym identyfikatorem konfiguracji |
Przykładowe dane eventFormat
To jest przykładowy element data
zwrócony przy użyciu funkcji dscc.subscribeToData()
z opcją dscc.objectFormat
.
{
"tables": {
"COMPARISON": [
{
"configId1": ["Week 5", "cd"],
"configId2": [123]
}
],
"DEFAULT": [
{
"configId1": ["Week 1", "ab"],
"configId2": [24]
}
]
},
"fields": {
"configId1": [
{
"id": "qt_h6oibrb6wb",
"name": "time of day",
"type": "TEXT",
"concept": "DIMENSION"
},
{
"id": "qt_i6oibrb6wb",
"name": "day",
"type": "TEXT",
"concept": "DIMENSION"
}
],
"configId2": [
{
"id": "qt_m9dtntutsb",
"name": "metric",
"type": "NUMBER",
"concept": "METRIC"
}
]
},
"style": {
"nodeColor": {
"value": {
"color": "#000000"
}
}
},
"theme": {},
"dateRanges": {
"DEFAULT": {
"start": "20210501",
"end": "20210531"
},
"COMPARISON": {
"start": "20200501",
"end": "20200531"
}
},
"interactions": {
"onClick": {
"value": {
"type": "FILTER",
"data": {
"concepts": [
"qt_h6oibrb6wb",
"qt_i6oibrb6wb"
],
"values": [
[
"Afternoon",
"Sunday"
],
[
"Afternoon",
"Thursday"
],
[
"Morning",
"Tuesday"
]
]
}
},
"supportedActions": [
"FILTER"
]
}
}
}