【发布时间】:2014-04-15 12:46:53
【问题描述】:
我为 Google Apps 转销商工作,并为我们的客户实施小工具。
我们有几个小工具使用 Google Visualization API 来查询电子表格(带有动态 ID)并在表格中显示结果。
我们正在使用这段代码:
function drawVisualization() {
var oldSpreadsheetUrl = "https://docs.google.com/spreadsheet/tq?key=<ss_id>";
var newSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/<ss_id>/gviz/tq";
var query = new google.visualization.Query(oldSpreadsheetUrl);
query.setQuery("SELECT A,B");
query.send(handleQueryResponse);
}
function handleQueryResponse(response) {
if(response.isError()) {
console.log(response.getMessage());
} else {
console.log("NUMBER OF COLUMNS: " + response.getDataTable().getNumberOfColumns());
}
}
并使用此示例电子表格(新的 Google 电子表格)进行测试
电子表格 ID:1qMvY3y4MkwoK1UvCA9A8dW4BbmhH1iMwWqGLEM5vjJk
只要我们查询旧的电子表格,一切正常,但如果我们查询新的电子表格(使用标准 url - oldSpreadsheetUrl),请求会失败并出现超时异常,我们会收到 404 异常。
这是我们在浏览器控制台中收到的消息:
http://i.imgur.com/h4DjyQ6.png
通过在数据源中使用这个新的 url,我们仍然可以使查询工作:
"https://docs.google.com/spreadsheets/d/<spreadsheet_id>/gviz/tq"
但是使用这种表示法,setQuery 指令将被忽略,并且返回所有三列而不是前两列 ("SELECT A,B")。
我们在几个小工具中使用它,因此想知道:
- 我们如何克服
setQuery错误? - 是否有程序化方法可以知道电子表格是新版本还是旧版本?
提前谢谢你。
问候,
里卡多
【问题讨论】:
标签: api google-sheets visualization google-spreadsheet-api