【问题标题】:Anything change with Google Apps Scripts or Visualization API in the last 24 hours?在过去 24 小时内,Google Apps 脚本或 Visualization API 有什么变化吗?
【发布时间】:2016-07-29 05:02:49
【问题描述】:

2016 年 4 月 7 日星期四中午左右,我失去了我的一个 Google Script WebApp 的所有新实例的功能。

我广泛使用从 JavaScript 调用的 google.visualization.Query(... 来快速搜索大型 Google 表格文件。

在撰写本文时,一个之前加载的 webapp 实例仍在成功运行,但所有新加载的实例都失败了。我已经提取了该工作实例的源代码,它与非工作实例相同。我创建了一个新项目,并且新项目实例(具有相同的代码)在所有浏览器中也都失败了。

我很困惑..

这是我怀疑的一段代码。这是一个递归函数,查询一个电子表格上的两个工作表(构建和构建),然后从另一个电子表格(存档)查询另一个工作表,并将结果设置为 3 个数据表。

function queryThings(response)
{
    // If this is the first call to query 
    if(response == null)
    {
        sessionStorage.setItem("qIndex_H", "0");

        // Building Query
        var query = new google.visualization.Query(s_thingsBuilding + '&tq=select+*+where+LOWER(' + key1 + ')+contains+%27' + sessionStorage.getItem("stringInput") + '%27');
        query.send(querythings);

        return;
    }

    // if This is the second call
    if(sessionStorage.getItem("qIndex_H") == "0")
    {
        sessionStorage.setItem("qIndex_H", "1");

        //Store build sheet dataTable in sessionStorage 
        sessionStorage.setItem("thingTable1", response.getDataTable().toJSON());

        // Show or hide the div
        if(response.getDataTable().getNumberOfRows() > 0)
            $("#thingsBuilding").show();
        else
            $("#thingsBuilding").hide();

        var query = new google.visualization.Query(s_thingsBuilt + '&tq=select+*+where+LOWER(' + key1 + ')+contains+%27' + sessionStorage.getItem("stringInput") + '%27');
        query.send(querythings);

        return;
    }

    // if This is the third call
    if(sessionStorage.getItem("qIndex_H") == "1")
    {           
        sessionStorage.setItem("qIndex_H", "2");

        //Store build sheet dataTable in sessionStorage 
        sessionStorage.setItem("thingTable2", response.getDataTable().toJSON());

        // Show or hide the div
        if(response.getDataTable().getNumberOfRows() > 0)
            $("#thingsBuilt").show();
        else
            $("#thingsBuilt").hide();

        var query = new google.visualization.Query(s_thingsArchive + '&tq=select+*+where+LOWER(' + key1 + ')+contains+%27' + sessionStorage.getItem("stringInput") + '%27');
        query.send(querythings);

        return;
    }

    sessionStorage.setItem("qIndex_H", "0");

    var dt1 = new google.visualization.DataTable(sessionStorage.getItem("thingTable1"));
    var dt2 = new google.visualization.DataTable(sessionStorage.getItem("thingTable2"));

    // Show or hide the div
    if(response.getDataTable().getNumberOfRows() > 0)
        $("#thingsArchive").show();
    else
        $("#thingsArchive").hide();

    if(dt1.getNumberOfRows() + dt2.getNumberOfRows() + response.getDataTable().getNumberOfRows() == 0)
        $("#thingsDiv").hide();

    setTable_DT(dt1, "thingsBuilding");
    setTable_DT(dt2, "thingsBuilt");
    setTable_DT(response.getDataTable(), "thingsArchive");
}

控制台输出:

未捕获的错误:缺少对请求 ID 的查询:0VM60 userCodeAppPanel:170
未捕获的类型错误:无法读取 nullqueryThings @ VM60 userCodeAppPanel 的属性“toJSON”:170R.eC @ format+en,default+en,ui+en,corechart+en.I.js:288xw @ format+en,default+en,ui +en,corechart+en.I.js:283(匿名函数) @format+en,default+en,ui+en,corechart+en.I.js:287
VM60 用户代码应用面板:243
...
未捕获的类型错误:无法读取 null 的属性“toJSON”
...

过去,我的 Google Apps 脚本代码崩溃了几个小时,只是为了让功能自行恢复。有谁知道最近对 API 的任何更改可能会影响我的代码?我认为它与浏览器无关,因为它在 IE、Firefox 和 Chrome 上都失败了。先前加载的一个工作实例已加载到 Chrome 上。诚然,我在这个文件中没有太多错误检查代码,但消除过程让我怀疑 Apps Script 或 Visualization API 的更新。

谢谢

最大

【问题讨论】:

  • 别以为是 Visualization API,目前正在构建仪表板,4/7 全天运行良好

标签: javascript google-apps-script google-visualization


【解决方案1】:

我错误地加载了“Table”和“Corechart”可视化包。

诚然,它非常草率,但我仍然不确定为什么它昨天有效,但今天无效。

google.load('visualization', '1', {packages: ['corechart']});
google.load("visualization", "1.1", {packages:["table"]});

被替换为

google.load("visualization", "1.1", {packages:["table", "corechart"]});

我的猜测是“Corechart”包被“Table”包覆盖了。

【讨论】:

  • 事实上,我的代码写得不好。仍然一定有一个变化导致了这个问题。我很想听听有关这种变化可能是什么的任何见解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多