包含自定义功能的细胞返回“南“”电子表格时没有打开。 (Apps脚本访问web应用的电子表格谷歌

2019-09-04 02:47发布

作为一名中学教师,我记录所有我的分级在谷歌电子表格。 我已经写了在电子表格中访问的电子表格中的自定义功能。 这一切工作正常。

我也有写在谷歌的简单(但独立)Web应用程序的Apps脚本是总结了每个访问,并在表中返回它的学生的成绩信息。 这已经完全实行了约8个月。 然而,学生们试图检查他们的成绩时,现在得到一个“南”的错误。 “南”只返回使用自定义功能的细胞。 通过简单地打开电子表格源,它暂时解决了这个问题。 但是,在关闭电子表格后不久,web应用程序开始再次返回“南”。

我假设它有事情做的时候/如何将这些细胞被重新计算,但我无法弄清楚如何使细胞保持其价值,而电子表格被关闭。 任何帮助将非常感激。

Answer 1:

与埃里克的建议,我实现了以下功能(它在很早以前就运行在我的应用程序):

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的消失。 它的工作原理惊人,但确实增加了一个小的滞后。



Answer 2:

只是为了添加自己的评论:

我发现其中使用谷歌应用程序的脚本来获得由单张纸功能填充,如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)