数据查询

本页面介绍了如何向支持图表工具数据源协议的数据源发送查询。

目录

概览

数据源是一项支持“图表工具”数据源协议的 Web 服务。您可以向数据源发送 SQL 查询,作为响应,您会收到填充了相应信息的 DataTable。数据源的示例包括 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 脚本中发送查询,请务必使用 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 图表数据表格式,或者将 CSV 文件放在提供图表的网络服务器上,然后使用本页介绍的方法进行查询。

更多信息