api - 新的 Google 电子表格导致 Google Visualization API 查询失败

标签 api google-sheets visualization google-spreadsheet-api

我在一家 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")。

我们在几个小工具中使用它,因此想知道:

  1. 我们如何克服 setQuery 错误?
  2. 有没有一种程序化的方法可以知道电子表格是新版本还是旧版本?

提前谢谢你。

问候,

里卡多

最佳答案

几周前,当我们使用新的 Google 表格进行一些测试时,我遇到了同样的问题。基本上,旧的 Google 表格需要一个具有以下格式的 URL:

https://spreadsheets.google.com/tq?key={key}

虽然新的 Google 表格需要一个具有这种格式的 URL:

https://docs.google.com/spreadsheets/d/{key}/gviz/tq

您应该能够使用域来区分新旧 Google 表格。如果做不到这一点,您可以随时查找 /gviz/ 来判断是否正在使用新的 Google 表格。您可以在 this bug report 中找到更多信息。 .

关于您关于 setQuery 的另一点,我今天早上在调试我自己的问题时注意到列 ID 被 Visualization API 返回为“Col 0”、“Col 1” "等,而不是 "A"、"B"等。这可能就是您的 ("SELECT A,B") 查询不起作用的原因。我也刚刚登录了 a bug对于这个问题。

希望对您有所帮助。

关于api - 新的 Google 电子表格导致 Google Visualization API 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084176/

相关文章:

python - TabPy - 无效的文件路径或缓冲区对象类型

android - 在播放之前如何在Android中获取音频文件的幅度?

c++ - 永久更改光标

javascript - 在 Google Analytics API 中使用和查询自定义维度

google-apps-script - Google Apps 事件更改类型在 Google 表格中未定义

r - 使用 ggplot2 在 R 上创建地平线图 : show percentage change

java - 从 WSDL 创建 Java API

api - 使用Graph API以粉丝页面(而不是用户)的身份发布到粉丝页面

javascript - Google 表格 - 表单提交时的格式日期

javascript - Google 电子表格脚本编辑器中的 IEFE(立即执行函数表达式)