本页面介绍了如何向支持图表工具数据源协议的数据源发送查询。
目录
概览
数据源是一项支持“图表工具”数据源协议的 Web 服务。您可以向数据源发送 SQL 查询,作为响应,您会收到填充了相应信息的 DataTable。数据源的示例包括 Google 电子表格和 SalesForce。
发送请求
如需发送请求,请执行以下操作:
- 使用数据源的网址实例化 Query 对象。网址应按照相应数据源所理解的语法,指明正在请求哪些数据。
-
(可选)在
Query
对象构造函数中将发送方法(例如发送方法)指定为可选的第二个参数(如需了解详情,请参阅查询构造函数的opt_options
参数): -
(可选)添加查询语言字符串以对结果进行排序或过滤,然后发送请求。数据源并非支持图表工具数据源查询语言。如果数据源不支持查询语言,则会忽略 SQL 查询字符串,但仍会返回
DataTable
。查询语言是一种 SQL 语言变体;如需查看完整的查询语言语法,请点击 - 发送查询,指定在收到响应时调用的回调处理程序:如需了解详情,请参阅下一部分。
下面是一个发送 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
。
您的响应处理程序应执行以下操作:
-
通过调用
response.isError()
检查请求是成功还是失败。您无需向用户显示任何错误消息;可视化库会在容器<div>
中为您显示错误消息。不过,如果您确实想手动处理错误,可以使用goog.visualization.errors
类显示自定义消息(如需查看自定义错误处理的示例,请参阅查询封装容器示例)。 -
如果请求成功,响应将包含一个
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 文件放在提供图表的网络服务器上,然后使用本页介绍的方法进行查询。
更多信息
- 查询语言语法 - 描述用于进行数据查询的语言的语法。
- 查询类 - 封装查询的类的参考页面。
- QueryResponse 类 - 封装查询响应的类的参考页面。