Javascript 在过去的24小时内,谷歌应用程序脚本或可视化API有什么变化吗?
2016年7月4日星期四中午左右,我失去了我的一个谷歌脚本网络应用程序的所有新实例的功能 我广泛使用JavaScript调用的Javascript 在过去的24小时内,谷歌应用程序脚本或可视化API有什么变化吗?,javascript,google-apps-script,google-visualization,Javascript,Google Apps Script,Google Visualization,2016年7月4日星期四中午左右,我失去了我的一个谷歌脚本网络应用程序的所有新实例的功能 我广泛使用JavaScript调用的google.visualization.Query(…from),以便快速搜索大型google Sheets文件 在撰写本文时,一个以前加载的webapp实例仍在成功运行,但所有新加载的实例都失败了。我已经提取了该工作实例的源代码,它与未运行的实例相同。我创建了一个新项目和新项目实例(代码相同)在所有浏览器中也会失败 我很困惑 这是一段我怀疑的代码。它是一个递归函数,查
google.visualization.Query(
…from),以便快速搜索大型google Sheets文件
在撰写本文时,一个以前加载的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: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,corechart+en.I.js:287
VM60 userCodeAppPanel:243
…
未捕获的TypeError:无法读取null的属性“toJSON”
在过去,我的谷歌应用程序脚本代码崩溃了几个小时,只是为了让功能自行恢复。有人知道API最近有什么变化可能会影响到我的代码吗?我认为这与浏览器无关,因为它在IE、Firefox和Chrome上出现故障。以前加载的实例的工作实例加载在Ch不可否认,我在这个文件中没有太多错误检查代码,但消除过程让我怀疑应用程序脚本或可视化API的更新 谢谢
Max我错误地加载了“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”写得太多了包。不要认为这是可视化API,目前正在构建一个仪表板,在4/7天内运行良好。事实是,我的代码编写得很糟糕。但一定是有一个更改导致了此问题的出现。我非常有兴趣听到任何关于此更改可能是什么的见解。