Zapytania o dane

Na tej stronie opisaliśmy, jak wysłać zapytanie do źródła danych obsługującego protokół źródła danych narzędzia do tworzenia wykresów.

Spis treści

Omówienie

Źródło danych to usługa internetowa, która obsługuje protokół Chart Tools Datasource. Możesz wysłać zapytanie SQL do źródła danych, a w odpowiedzi otrzymasz tabelę danych zawierającą odpowiednie informacje. Przykładowe źródła danych to Arkusze Google i Salesforce.

Wysyłanie prośby

Aby wysłać prośbę:

  1. Utwórz instancję obiektu Query, używając adresu URL źródła danych. Adres URL powinien wskazywać składowaną treść, której dotyczy żądanie.
  2. Opcjonalnie określ opcje żądania, takie jak metoda wysyłania, jako opcjonalny drugi parametr w konstruktorze obiektu Query (szczegóły znajdziesz w parametrze opt_options konstruktora zapytań):
  3. Opcjonalnie dodaj ciąg języka zapytania, aby posortować wyniki lub filtrować je, a następnie wysłać żądanie. Źródła danych nie są wymagane do obsługi języka zapytań o źródła danych w narzędziach do wykresów. Jeśli źródło danych nie obsługuje języka zapytania, zignoruje ciąg znaków SQL, ale zwróci DataTable. Język zapytania to wariant języka SQL. Pełną składnię języka zapytania znajdziesz tutaj.
  4. Wyślij zapytanie, podając moduł obsługi wywołań zwrotnych, który będzie wywoływany po otrzymaniu odpowiedzi. Szczegółowe informacje znajdziesz w następnej sekcji.

Oto przykład wysyłania żądania dotyczącego danych w zakresie arkusza kalkulacyjnego Google. Aby dowiedzieć się, jak uzyskać adres URL arkusza kalkulacyjnego Google, kliknij tutaj:

function initialize() {
  var opts = {sendMethod: 'auto'};
  // Replace the data source URL on next line with your data source URL.
  var query = new google.visualization.Query('http://spreadsheets.google.com?key=123AB&...', opts);

  // Optional request to return only column C and the sum of column B, grouped by C members.
  query.setQuery('select C, sum(B) group by C');

  // Send the query with a callback function.
  query.send(handleQueryResponse);
}

function handleQueryResponse(response) {
  // Called when the query response is returned.
  ...
}

Jeśli wysyłasz zapytanie z poziomu Apps Script, pamiętaj, aby użyć trybu IFRAME.

Przetwarzanie odpowiedzi

Funkcja obsługi odpowiedzi zostanie wywołana po zwróceniu żądania. Parametr przekazywany do funkcji obsługi odpowiedzi jest typu google.visualization.QueryResponse. Jeśli żądanie zostało zrealizowane, odpowiedź zawiera tabelę danych (klasa google.visualization.DataTable). Jeśli żądanie nie zostało zrealizowane, odpowiedź zawiera informacje o błędzie, a nie DataTable.

Twój moduł obsługi odpowiedzi powinien:

  1. Zadzwoń pod numer response.isError(), aby sprawdzić, czy żądanie się powiodło, czy nie. Nie musisz wyświetlać żadnych komunikatów o błędach użytkownikowi. Biblioteka wizualizacji wyświetli odpowiedni komunikat o błędzie w kontenerze <div>. Jeśli jednak chcesz obsługiwać błędy ręcznie, możesz użyć klasy goog.visualization.errors, aby wyświetlić komunikaty niestandardowe (przykład niestandardowego przetwarzania błędów znajdziesz w przykładzie kodu zapytania).
  2. Jeśli żądanie zostanie zrealizowane, odpowiedź będzie zawierać żądanie DataTable, które możesz pobrać, wywołując metodę getDataTable(). Pokaż ją na wykresie.

Ten kod pokazuje, jak przetwarzać poprzednie dane w celu narysowania wykresu kołowego:

function handleQueryResponse(response) {

  if (response.isError()) {
    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
    return;
  }

  var data = response.getDataTable();
  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 400, height: 240, is3D: true});
}

Odczytywanie plików CSV

Jeśli chcesz utworzyć wykres na podstawie danych CSV (wartości rozdzielanych przecinkami), masz dwie możliwości. Ręcznie przekonwertuj dane CSV na tabelę danych Wykresów Google lub umieść plik CSV na serwerze WWW, na którym wyświetla się wykres, i utwórz zapytanie na jego temat, korzystając z wybranej na tej stronie metody.

Więcej informacji