作为一名中学教师,我记录所有我的分级在谷歌电子表格。 我已经写了在电子表格中访问的电子表格中的自定义功能。 这一切工作正常。
我也有写在谷歌的简单(但独立)Web应用程序的Apps脚本是总结了每个访问,并在表中返回它的学生的成绩信息。 这已经完全实行了约8个月。 然而,学生们试图检查他们的成绩时,现在得到一个“南”的错误。 “南”只返回使用自定义功能的细胞。 通过简单地打开电子表格源,它暂时解决了这个问题。 但是,在关闭电子表格后不久,web应用程序开始再次返回“南”。
我假设它有事情做的时候/如何将这些细胞被重新计算,但我无法弄清楚如何使细胞保持其价值,而电子表格被关闭。 任何帮助将非常感激。
与埃里克的建议,我实现了以下功能(它在很早以前就运行在我的应用程序):
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的消失。 它的工作原理惊人,但确实增加了一个小的滞后。
只是为了添加自己的评论:
我发现其中使用谷歌应用程序的脚本来获得由单张纸功能填充,如INDEX()和QUERY()单元格的值类似的效果。
使用的GetValues()代替的getValue()可以做的伎俩的Eric的评论。 但我没有检查。
我的问题的链接是在这里: https://stackoverflow.com/questions/32519900/check-if-google-sheet-query-returned-rows?noredirect=1#comment53128587_32519900 。
文章来源: Cells containing custom functions return “NaN'” when spreadsheet is not open. (Apps Script webapp accessing google spreadsheet)