【问题标题】:Google Visualization API Query fails with new Google SpreadsheetsGoogle Visualization API 查询因新的 Google 电子表格而失败
【发布时间】: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")。

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

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

提前谢谢你。

问候,

里卡多

【问题讨论】:

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


    【解决方案1】:

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

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

    虽然新版 Google 表格需要采用这种格式的网址:

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

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

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

    希望对您有所帮助。

    【讨论】:

    • 感谢您的回答!在向谷歌打开错误报告后,这似乎是他们试图在不久的将来解决的错误。至于您对检查 url 的建议,这是真的,但我们不能使用这种方法,因为我们只获取电子表格 id,而不是 url。
    • 任何想法如何将其转换为 HTML 表格(以前您会使用 out:html)。
    • 抱歉,我从来没有这样做过,所以不确定那里发生了什么变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多