如何在Javascript中将查询字符串传递给Google表格API v4
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Javascript中将查询字符串传递给Google表格API v4相关的知识,希望对你有一定的参考价值。
在之前的版本中我曾经做过(简化):
var queryString = encodeURIComponent('SELECT A,B,D,C WHERE D=1');
var query = new google.visualization.Query(
'https://docs.google.com/spreadsheets/d/1*SPREADSHEETID*/gviz/tq?gid=1013479342&headers=1&tqx=responseHandler:handleQueryResponse' + '&access_token=' + encodeURIComponent(gapi.auth.getToken().access_token));
query.send(handleQueryResponse);
function handleQueryResponse(response) {
var dataTable = response.getDataTable();
}
现在,利用Google表格API v4(gapi.client.sheets.spreadsheets.values.get),这在v3中不起作用。我做:
var params = {
valueRenderOption: "UNFORMATTED_VALUE",
spreadsheetId: '*YOURSPREADSHEETID',
range: 'Sheet1!A:D',
var request = gapi.client.sheets.spreadsheets.values.get(params);
request.then(function(response) {
var values = response.result.values.map(function(e) {return [e[0], e[1], e[3], e[2]]});
var w = new google.visualization.ChartWrapper({dataTable: values,
query: "select * where D = 1"}); // THIS DOESN'T WORK
var dataTable = w.getDataTable();
我想我可以在chartwrapper属性中添加“query:”select * where D = 1“”,试图避免对数组中的每个元素进行排序和遍历,或者使用额外的controlwrapper。
答案
我会把它留在这里。经过进一步研究,Google表格API v4仍然不支持简单过滤。
谷歌的一位开发人员认为过滤应该是一个完整的数据库的独家功能,谷歌表不是一个,所以我怀疑他们将永远从v3带回功能。
如果您需要过滤,您有3个选择:
- 首先过滤您的电子表格(使用过滤后的数据制作多个工作表,然后调用已应用过滤器的范围)。
- 回到使用支持过滤的Google表格v3(见上文)。
- 在客户端级别收到数据后过滤数据(是的,我知道这是性能最差的)。
我选择采用第三种方法。由于我正在使用Google Visualization API,我所要做的就是在绘制数据视图之前对数据视图应用过滤器。
var view = new google.visualization.DataView(dataTable);
view.setRows(dataTable.getFilteredRows([{column: 4, value: 1}]));
以上是关于如何在Javascript中将查询字符串传递给Google表格API v4的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 4 在 Web 视图中将 JSON 字符串传递给 Javascript