作为一名高中教师,我会将所有评分记录在Google电子表格中。我在电子表格中编写了可在电子表格中访问的自定义函数。一切正常。
我还有一个用谷歌应用程序脚本编写的简单(但独立)的网络应用程序,它总结了访问它的每个学生的成绩信息并将其返回到表格中。这已经完美运行了大约8个月。但是,学生在尝试检查成绩时会出现“NaN”错误。仅对使用自定义函数的单元格返回“NaN”。只需打开源电子表格,它就可以暂时解决问题。但在关闭电子表格后不久,webapp就开始再次返回“NaN”。
我假设它与何时/如何重新计算这些细胞有关,但我无法弄清楚如何在电子表格关闭时使细胞保持其值。任何帮助将不胜感激。
答案 0 :(得分:0)
根据Eric的建议,我实现了以下功能(在我的应用程序中尽早运行):
function refreshSheet(spreadsheet, sheet) {
var dataArrayRange = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn());
var dataArray = dataArrayRange.getValues(); // necessary to refresh custom functions
var nanFound = true;
while(nanFound) {
for(var i = 0; i < dataArray.length; i++) {
if(dataArray[i].indexOf('#N/A') >= 0) {
nanFound = true;
dataArray = dataArrayRange.getValues();
break;
} // end if
else if(i == dataArray.length - 1) nanFound = false;
} // end for
} // end while
}
它基本上不断刷新工作表(使用.getValues())直到所有#N / A都消失。它工作得非常好,但确实增加了一点滞后。
答案 1 :(得分:0)
只是添加我自己的评论:
我发现使用Google App Scripts从INDEX()和QUERY()等表函数填充的单元格中获取值的效果类似。
Eric关于使用getValues()而不是getValue()的评论可能会有所帮助。但我没有检查过。