![](/img/trans.png)
[英]Google Apps Script (Spreadsheet) - selecting an array in spreadsheet based on a condition in cells
[英]Cells containing custom functions return “NaN'” when spreadsheet is not open. (Apps Script webapp accessing google spreadsheet)
作为一名高中老师,我将所有成绩记录在Google电子表格中。 我已经在该电子表格中编写了自定义函数,可以在电子表格中对其进行访问。 一切正常。
我还有一个用google apps脚本编写的简单(但独立)的网络应用程序,该应用程序总结了访问它的每个学生的成绩信息并将其返回到表格中。 这已经运行了大约8个月。 但是,现在,学生在尝试检查成绩时会收到“ NaN”错误。 仅对于使用自定义函数的单元格返回“ NaN”。 通过简单地打开源电子表格,它可以临时解决问题。 但是在关闭电子表格后不久,Web应用程序开始再次返回“ NaN”。
我假设这与何时/如何重新计算这些单元格有关,但是我无法弄清楚在关闭电子表格时如何使这些单元格保持其值。 任何帮助将非常感激。
在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消失为止。 它的效果很棒,但确实增加了一点延迟。
只是添加我自己的评论:
在使用Google App脚本从工作表函数(例如INDEX()和QUERY())填充的单元格中获取值时,我发现了类似的效果。
埃里克(Eric)使用getValues()而不是getValue()的评论可能可以解决问题。 但是我还没有检查。
我的问题的链接在这里: https : //stackoverflow.com/questions/32519900/check-if-google-sheet-query-returned-rows?noredirect=1#comment53128587_32519900 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.