資料查詢

本頁說明如何將查詢傳送至支援圖表工具資料來源通訊協定的資料來源。

目錄

總覽

資料來源是支援圖表工具資料來源通訊協定的網路服務。您可以將 SQL 查詢傳送至資料來源,做為回應時,您會收到已填入適當資訊的資料表。資料來源包括 Google 試算表和 SalesForce。

傳送要求

如何傳送要求:

  1. 使用資料來源的網址將 Query 物件例項化。網址應根據該資料來源解讀的語法,指出所要求的資料。
  2. 視需要指定要求選項,例如在 Query 物件建構函式中將傳送方法當做選用的第二個參數 (詳情請參閱查詢建構函式的 opt_options 參數):
  3. 視需要新增查詢字串字串,以便排序或篩選結果,然後再傳送要求。資料來源並非支援圖表工具資料來源查詢語言。如果資料來源不支援查詢語言,系統會忽略 SQL 查詢字串,但仍會傳回 DataTable。查詢語言為 SQL 語言變體;請參閱這裡的完整查詢語言語法。
  4. 傳送查詢,指定收到回應時將呼叫的回呼處理常式:詳情請參閱下一節。

以下是傳送 Google 試算表儲存格範圍資料要求的範例;如要瞭解如何取得 Google 試算表的網址,請參閱這裡

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.
  ...
}

如果您要透過 Apps Script 傳送查詢,請務必使用IFRAME模式

處理回應

要求傳回時,系統會呼叫您的回應處理常式函式。傳入回應處理常式函式的參數屬於 google.visualization.QueryResponse 類型。如果要求成功,回應會包含資料表 (類別 google.visualization.DataTable)。如果要求失敗,回應會包含錯誤相關資訊,且不會包含 DataTable

回應處理常式應執行下列操作:

  1. 呼叫 response.isError(),確認要求是否成功或失敗。您不需要向使用者顯示任何錯誤訊息;視覺化程式庫會在容器 <div> 中顯示錯誤訊息。不過,如要手動處理錯誤,可以使用 goog.visualization.errors 類別顯示自訂訊息 (如需自訂錯誤處理範例,請參閱查詢包裝函式範例)。
  2. 如果要求成功,回應會包含 DataTable,呼叫 getDataTable() 則可擷取。將圖表傳送至圖表。

下列程式碼示範如何處理先前的要求繪製圓餅圖的要求:

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

讀取 CSV 檔案

如要利用 CSV (逗號分隔值) 資料建立圖表,您有兩種選擇。您可以透過手動將 CSV 資料轉換為 Google Charts 資料表格式,或將 CSV 檔案放到提供圖表的網路伺服器上,然後使用本頁上的技巧查詢。

更多資訊