![](/img/trans.png)
[英]How to implement the makeApiCall() method after migrating Google Sheets API v3 to v4 with Oauth Authorization in Javascript
[英]How to Pass a Query String to Google Sheets API v4 in Javascript
在以前的版本中我曾经做(简化):
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();
}
现在,要利用在 v3 中不起作用的 Google Sheets API v4 (gapi.client.sheets.spreadsheets.values.get)。 我愿意:
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();
我想我可以在图表包装器属性中添加“查询:“select * where D = 1””,以避免对数组中的每个元素进行排序和遍历,或者使用额外的控件包装器。
我会把这个留在这里。 经过进一步研究,Google Sheets API v4 仍然不支持简单过滤。
谷歌的一位开发人员认为过滤应该是成熟数据库的专有功能,而谷歌表不是一个,所以我怀疑他们是否会从 v3 中恢复该功能。
如果您需要过滤,您有 3 个选项:
我选择使用第三种方法。 由于我正在使用 Google Visualization API,因此我所要做的就是在绘制数据视图之前在数据视图上应用过滤器。
var view = new google.visualization.DataView(dataTable);
view.setRows(dataTable.getFilteredRows([{column: 4, value: 1}]));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.